Redirection 301 – .htaccess et PHP

Accès direct :

Il vous arrive peut-être de devoir changer le nom de domaine ou la structure d’un site. Un immonde /index.php?mapage=outils&souspage=whois se transformant ( grâce à l’url rewriting … ou non ) en un sympathique /outils/whois.htm. Un nom de domaine peut également être remplacé par un plus clair / court / mémorisable / lisible.

Les avantages sont connus : un meilleur référencement, une URL plus claire et plus facile à mémoriser ou à retrouver dans ses favoris/marque-pages, etc.

Mais cette méthode comporte également certains inconvénients : Les moteurs de recherche se « souviennent » de l’ancienne URL et risquent de considérer la nouvelle comme un doublon, des liens peuvent exister vers l’ancienne page, et les webmasters de ces sites peuvent ne pas répondre … ou ne plus tenir à jour leur site, et plus important : des favoris/marque-pages de visiteurs peuvent mener vers une page d’erreur 404.

C’est pourquoi il est très important de maintenir une cohérence entre l’ancienne page et la nouvelle, en mettant en place une redirection 301 ( définitive ).

Note : Je n’aborderais pas la redirection 302 (redirection temporaire), parce qu’elle n’est vraiment utile que dans de rares cas, et est souvent mal utilisée. Mais c’est un avis personnel qui n’engage que moi.

J’utilise deux techniques différentes, selon les cas de figure, donc à utiliser selon votre préférence : htaccess ou PHP.

Redirection 301 via PHP

Avant tout envoi de code html / css (même les espaces et tabulations), collez ce code :

<?php
header('Location: http://www.monsite.com/nouvelleurl.htm', true, 301);
exit();
?>

Notes :

  • J’utilise toujours des URL absolues (avec http: //mondomaine.com avant) pour être sûr de la destination.
  • Les deux derniers paramètres ( true et 301 ) sont obligatoires pour un bon fonctionnement.
  • Un espace après "location", pas avant !
  • Le exit(); permet d’arrêter votre script juste après, et de ne pas envoyer de données. Au choix.
  • J’utilise cette méthode pour rediriger une URL dynamique ou indésirable vers une autre, en complément d’un lien canonical.

Redirection 301 via .htaccess ( Apache )

Dans un fichier .htaccess créé à la racine de votre site ( généralement le même dossier que le index.php ou index.htm principal ), collez ce code :

RedirectPermanent /ancienneurl.php http://www.monsite.com/nouvelleurl.htm

Notes :

  • La casse de la commande peut changer selon les scripts, mais je me base sur la syntaxe donnée par le manuel Apache(Serveur Web). Bon à savoir, cette page peut également vous fournir d’autres redirections plus complexes (mais bien utiles) comme RedirectMatch.
  • Encore une fois, une URL absolue pour la destination.
  • Le module Apache mod_alias.c doit être activé. Mais par défaut … c’est fait. Si le bout de code ne marche vraiment pas, contactez votre hébergeur.

Bonne redirection à tous !

PS : évidemment, mes méthodes ne sont sûrement pas les meilleures. Mais si vous avez mieux, les commentaires sont là pour ça :D .
PS2 : Ce blog tourne vraiment au bloc-notes et aide mémoire. Mais si vous lisez cette phrase, c’est que ça vous a intéressé, oui ? ( non ? Partez pas, quoi :( )

Adieu www.darklg.fr

Mon ancien site perso (www.darklg.fr) n’existe plus. Trop vieux, pas assez à jour, un code douteux. Bienvenue au nouveau, bâclé en deux heures.

Voici donc Kevin-Rocher.fr.

Kevin Rocher

Au programme, rien de bien fou, mais beaucoup d’amour :

  • Une courte présentation
  • Un « CV ».
  • Une page de contact
  • Une optimisation SEO et (attention, blague violente) « Personne n’a le bras en digne » pour le terme Kévin Rocher.
  • Des commentaires tordus dans la source, des fonctionnalités inutiles comme le redimensionnement du site, mais beaucoup de bonheur.

Il y a du CSS3 dedans, et donc sous IE 6 et autres navigateurs périmés, ça ne « rend pas pareil ». Mais j’ai fait en sorte que ça soit propre. Merci IE7.js!
En fond de page, une illusion d’optique ( oui, ce sont bien des droites parallèles ). Désolé pour vos yeux.

Une idée, une remarque, une critique ? Allez-y, et merci d’avance.

Catégories : Web - 6 commentaires

Forcer les www dans un nom de domaine

Certains défendent l’affichage d’un site sans les www, d’autres non.
Quoi qu’il en soit, il est intéressant de savoir forcer les www ou non, afin d’éviter un duplicate-content ou une méprise ( avec www ou sans www, est-ce le même site ? ).

C’est très simple, vous créez un fichier « .htaccess » à la racine de votre site, et vous y collez un des bouts de code suivants :

Forcer les WWW

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.mondomaine.com$ [NC]
RewriteRule ^(.*)$ http://www.mondomaine.com/$1 [L,R=301]

Enlever les WWW

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^mondomaine.com$ [NC]
RewriteRule ^(.*)$ http://mondomaine.com/$1 [L,R=301]

En accédant au site sans les www, vous serez redirigés automatiquement vers la version avec www ( et réciproquement, selon le réglage choisi )
J’en suis conscient, l’article apporte peu, mais c’est typiquement le bout de code que j’oublie toujours.

Note : Vous pouvez également régler ce paramètre dans les Google Webmasters Tools, mais cela ne permettra pas la redirection automatique.
Note 2 : C’est pas « mes codes », la technique est assez connue, j’avais besoin d’un favori à moi. donc les bouts de code sont en licence WTFPL :)
A mettre dans vos snippets Textmate et autres !

Catégories : Divers - 4 commentaires