Il y a peu, je suis intervenu sur le blog d’une amie (Marion pour ne pas la citer) pour régler un sombre souci de hack sur son WordPress. J’en ai profité pour régler un vieux souci : la gestion de la redirection d’un domaine vers un autre. Y compris avec des liens profonds.

Dans son cas, son domaine .fr est le principal. Pour éviter le cybersquatting, elle a également le domaine .com. Sauf qu’il ne sert actuellement à rien.

Comment gérer une redirection de l’ensemble du trafic .com vers le .fr sans provoquer une 404 ?

Ok, ça paraît très barbare, mais il faut éviter d’afficher une jolie erreur 404 à ses visiteurs. Mais aussi de renvoyer vers une homepage alors qu’un lien profond est cliqué.

Ce que j’ai du coup mis en place ? La gestion de la redirection 301 via un fichier .htaccess.

C’est de loin un sujet que j’aime éviter, mais autant mettre les mains dans le cambouis pour apprendre ! Au final, ce n’est pas si compliqué, un peu complexe au premier abord mais on prend vite ses marques.

Avant toute chose, reprenons les bases. Un .htaccess est un fichier qui est très utile, il a pour but d’indiquer des commandes précises au serveur web. Exemple concret : protéger rapidement une page par un mot de passe, gérer ses propres pages d’erreurs, indiquer qu’un contenu a été déplacé …

Tips : le point devant le nom de fichier indique qu’il s’agit d’un fichier caché. Créez le sans point et modifiez ceci une fois en ligne.

Revenons au cas de Marion qui avait en tête l’envie de rediriger le point 1 (domaine secondaire) vers le point 2 (domaine principal) :

  1. http://monsuperdomaine.com/ma-page-contact
  2. http://monsuperdomaine.fr/ma-page-contact

Du coup, connexion au serveur FTP (utilisez FileZilla par exemple) et création d’un fichier .htaccess à la racine de votre hébergement (souvent le dossier www) avec pour contenu :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^monsuperdomaine.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.monsuperdomaine.com [NC]
RewriteRule ^(.*)$ http://monsuperdomaine.fr/$1 [L,R=301,NC]

Quelques explications ne feraient pas de mal non ?

  1. RewriteEngine on : on active le moteur de réécriture.
  2. RewriteCond %{HTTP_HOST} ^monsuperdomaine.com [NC,OR] : voici la règle de redirection pour ce moteur pour le domaine.
  3. RewriteCond %{HTTP_HOST} ^www.monsuperdomaine.com [NC] : voici la règle de redirection pour ce moteur pour le sous-domaine.
  4. RewriteRule ^(.*)$ http://monsuperdomaine.fr/$1 [L,R=301,NC] : on retrouve ici ce qui va être appliqué comme redirection.

Pour ce dernier point, voici ce qui se passe :

  • ^(.*)$ envoie dans la variable appelée $1 la ressource demandée via l’URL (dans l’exemple c’était « ma-page-contact« ).
  • Puis on indique le nouveau domaine auquel on applique la ressource contenue dans la variable $1 (« ma-page-contact« ).
  • Enfin, [R=permanent] précise qu’il s’agit d’une redirection permanente (redirection 301). Logiquement, les moteurs de recherches vont le prendre en compte dans leurs indexations.

Et voilà !

Ceci marche également dans le cas où vous changez de nom de domaine tout en voulant garder votre trafic et vos contenus.