htaccess RewriteRule, mod_rewrite, RewriteCond & Redirect 301
Redirection d’un domaine WWW vers un domaine non WWW
# 301 redirection (redirection permanente) de http://www.monsite.com vers http://monsite.com RewriteEngine on Options +FollowSymLinks RewriteCond %{HTTP_HOST} ^www.monsite.tld$ [NC] RewriteRule ^(.*)$ http://monsite.com/$1 [R=301,L]
Redirection d’un domaine vers un autre domaine
Supposons que nous voulions rediriger toutes les pages et publications de http://www.monsite1.com vers
http://www.monsite2.com. Pour ce faire, il vous suffit de placer le code ci-dessous dans le fichier .htaccess de http://www.monsite1.com.
# rediriger de http://www.monsite1.com vers http://www.monsite2.com RewriteEngine On RewriteRule ^(.*)$ http://www.monsite2.com/$1 [R=301,L]
Redirection 301
La redirection 301 est également appelée redirection permanente. Il redirige les visiteurs vers une nouvelle page et signale aux robots des moteurs de recherche que la page a été déplacée de façon permanente vers un nouvel emplacement.
Rediriger une page vers un autre emplacement –
Ici, je redirige l’URL http://monsite.com/categorie1/page1.html vers http://monsite.com/categorie/page2.html
# 301 Exemple de redirection Redirect 301 /categorie1/page1.html http://monsite.com/categorie2/page2.html
Il peut aussi s’écrire comme –
Redirect permanent /categorie1/page1.html http://monsite.com/categorie2/page2.html
Dans l’exemple ci-dessus, nous mettons en place une redirection au sein du même site. Si vous envisagez de configurer une redirection entre deux sites Web différents, RewriteRule est une meilleure option.
Exemple –
J’utilise le même exemple de monsite1 et monsite2
# RewriteRule RewriteRule http://www.monsite1.com/premierepage.php http://www.monsite2.com/deuxiemepage.php RewriteRule http://www.monsite1.com/categorie/ http://www.monsite2.com/nouvcat/ RewriteRule http://www.monsite1.com/ http://www.monsite2.com/
Rediriger l’ensemble du site Web vers la page d’accueil d’un nouveau domaine
Disons que le code ci-dessous est placé dans le fichier .htaccess de monsite1, puis toute URL demandée pour monsite1 serait redirigée vers la page d’accueil de monsite2 (c’est-à-dire http://www.monsite2.com/)
# redirection permanente pour tout un site Redirect 301 / http://www.monsite2.com
Le code ci-dessus peut également être écrit comme suite :
Redirect permanent / http://www.monsite2.com
Rediriger si le fichier n’existe pas
Si mon fichier – http://monsite.com/categorie/page.php n’existe pas, redirigez-le vers http://monsite.com/categorie/subcat/. Écrivons-le dans le fichier .htaccess –
# ne réécrit que si le fichier n'existe pas RewriteCond %{REQUEST_URI} ^/categorie/(.*)/page.php$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^categorie/(.*)/page.php$ categorie2/subcat/$1
Rediriger vers le sous-domaine
Par exemple, je veux rediriger mes visiteurs vers http://sousdomaine.monsite.com à partir de http://monsite.com alors vous pouvez l’écrire comme-
# envoyer les visiteurs vers un sous-domaine RewriteCond %{HTTP_HOST} !^$ RewriteCond %{HTTP_HOST} !^sousdomaine.monsite.com$ [NC] RewriteRule ^/(.*)$ http://sousdomaine.monsite.com/$1 [L,R=301]
Résoudre le problème de contenu en double à l’aide de la réécriture
Par exemple – mon site Web www.monsite.com a une page Web qui s’affiche lorsque l’utilisateur entre l’une des URL ci-dessous dans le navigateur –
http://www.monsite.com/mapage
http://www.monsite.com/mapage?id=95
Si vous considérez le référencement, ces pages peuvent être traitées comme des pages en double, donc pour éviter une telle situation, vous pouvez rediriger les pages du second type vers le premier.
RewriteCond %{THE_REQUEST} ^GET /.*;.* HTTP/ RewriteCond %{QUERY_STRING} !^$ RewriteRule .* http://www.monsite.com%{REQUEST_URI}? [R=301,L]
Après avoir eu le code ci-dessus dans .htaccess, lorsque l’utilisateur entre l’url – http://www.monsite.com/mapage?id=95, il serait redirigé vers le – http://www.monsite.com/mapage