Le top des redirections htaccess

Amis webmasters, je suis certain que cela vous parle. Les fichiers htaccess sont très utiles pour mettre en place des redirections de page à page, de domaine à domaine ou de sous-domaine à sous-domaine.

Les fichiers htaccess ne fonctionnent que sur les serveurs Apache malheureusement (de toute façon les utilisateurs de serveurs IIS ne le mérite pas). Blague à part, ils fonctionnent mieux sur les serveurs dédiées car les mutualisées ont parfois des restrictions plus ou moins drastiques.

Il ne se passe pas un jour ou je recherche une fonction par si par la pour n’importe quel type de redirection alors voilà, je rassemble le tout pour vous ce soir. On passera dans un premier temps par les redirections htaccess de base et ont terminera par des redirections un peu plus complexes.

Ah oui, j’utilise uniquement des redirections de type 301, c’est-à-dire des redirections permanentes qui sont un plus pour le référencement dans le cadre d’une refonte d’un site, de la suppression d’une page ou tout simplement pour éviter les contenus dupliqués.

Pour commencer, il est nécessaire d’avoir cette déclaration tout en haut du fichier (oui c’est obligatoire et vous n’y dérogerez pas) :

RewriteEngine On

NB : après avoir inséré cette ligne dans votre fichier .htaccess, vous pouvez essayer de l’uploader sur votre serveur, si il y a une erreur 500 qui se présente, c’est mort, les redirections ne fonctionneront pas.

Redirection simple de http://www.domaine1.fr/page1.html vers http://www.domaine1.fr/page2.html

RewriteCond %{HTTP_HOST} ^www.domaine1.fr$ [NC]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^page1.html$ http://www.domaine1.fr/page2.html? [R=301,NE,NC,L]

Redirection de http://www.domaine1.fr/page1.html vers http://www.domaine2.fr/page1.html (changement de domaine)

RewriteCond %{HTTP_HOST} ^www.domaine1.fr$ [NC]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^page1.html$ http://www.domaine2.fr/page1.html? [R=301,NE,NC,L]

Changement de domaine dynamique (quelque soit la page sur laquelle on se trouve)

RewriteCond %{HTTP_HOST} !^domaine1.com$ [NC]
RewriteRule ^(.*)$ http://www.domaine2.com/ [R=301,L]

Redirection de http://www.domaine1.fr/page1.html vers http://www.domaine2.fr/page2.html (changement de domaine et de page)

RewriteCond %{HTTP_HOST} ^www.domaine1.fr$ [NC]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^page1.html$ http://www.domaine2.fr/page2.html? [R=301,NE,NC,L]

Redirection de http://domaine1.fr vers http://www.domaine1.fr (changement de sous-domaine en gardant la page sur laquelle on se trouve)

RewriteCond %{HTTP_HOST} !^www.domaine1.fr$
RewriteRule ^(.*) http://www.domaine1.fr/$1 [QSA,L,R=301]

Suppression de index.php en fin d’url (pour éviter le duplicate content sur la page d’accueil par exemple)

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.domaine1.fr/$1 [R=301,L]

Avec ça, je pense que vous avez de quoi faire pour un début, je reviendrais plus tard sur les fichiers htaccess pour mettre en place des systèmes de mise en cache de fichiers et bien plus encore. Et puis si jamais encore de ces redirections ne fonctionnent pas (c’est possible), il faudra considérer l’utilisation du PHP :

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.domaine1.fr/page2.html");
exit();

Ou pour une redirection dynamique vers l’accueil (le code diffère un peu, celui-ci est plus recommandé) :

header("Status: 301 Moved Permanently", false, 301);
header("Location: http://".$_SERVER['HTTP_HOST']);
exit();
Regex : le top des expressions régulières pour développeur
Htaccess : Cache, compression GZip, Minify et plus

4 Comments on “Le top des redirections htaccess”

  1. Un peu perdue!
    Je voudrais faire la redirection d’un nom de domaine domaine1.fr vers le sous répertoire d’un autre nom de domaine : domaine2.fr/domaine1/ et que les internautes ne voient pas cette redirection et qu’ils voient pour toutes les pages domaine1.fr/page seulement.
    Que dois-je faire???
    merci!

    1. Les redirections présentées dans l’article sont de vrais redirections 301. C’est à dire que l’url change et le visiteur voit que l’url change. Vous souhaitez faire une « redirection silencieuse », chose que je n’ai jamais fait. Vous pouvez démarrer par :

      RewriteEngine On
      RewriteRule ^.*$ http:// www. siteB .fr/$1 [P]

      (supprimez les espaces du siteB)
      N’hésitez pas a revenir poster votre solution.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *