Les redirections web dans le fichier .htaccess

Contenu

Deux façons de faire des redirections

Si vous voulez faire une redirection avec un fichier htaccess, il existe en gros deux façons de le faire, Redirect et RedirectMatch, qui ne vous permettent pas d’utiliser des expressions régulières, et RewriteRule qui vous permet d’utiliser les expressions régulières et de le faire plus finement (non détaillé ici).

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Redirection sans le module mod_rewrite

Comment faire une redirection 301 dans le .htaccess?

Lorsque vous ne voyez pas la directive RewriteEngine On dans le fichier .htaccess, vous ne pouvez pas faire de règle de redirection. La directive RewriteEngine On est utilisé dans une installation WordPress pour la réécriture d’url. En général il se présente comme suit :

Le plus souvent c’est utilisé pour faire des jolies urls, mais il permet de faire des réécritures d’url, des redirections, erreurs 404 etc. Si vous voulez faire une redirection 301 en dehors de ce snippet, vous devez utiliser une autre syntaxe. Comme nous allons voir ci-après :

#une url en particulier
Redirect 301 /ancienne_url     http://monsite.com/new_url
# url commençant par /blog
RedirectMatch 301 ^/blog  

Dans la première partie on ne mentionne pas le nom de domaine, mais la partie qui est juste après. La syntaxe est intuitive, on fait une redirection 301 point.

Comment gérer les erreurs 404 dans le .htaccess?

Ici pareillement on change le code de redirection, 404.html est une page qui va être affiché en cas d’erreur 404 :

ErrorDocument 404 /404.html

Les pages supprimées définitivement avec 410 « Gone »

Si vous avez une page que vous ne voulez plus dans l’index de Google et vous ne voulez plus que Google la crawle pour la réindexer, vous devez renvoyer un code HTTP 410 « Gone », la page n’est plus là et elle ne doit plus être considérées. Cependant avec Google en particulier, il faut veiller à ce qu’il n’y ait aucun lien interne ou externe au site qui pointe vers cette page.

#il faut ajouter cette ligne si vous voulez personnaliser le message (optionnel)
ErrorDocument 410 "Gone"
Redirect 410 /busai/

#Redirect avec expression régulière pour les urls commençant par /blog (on commence après le nom de domaine)
RedirectMatch 410 ^/blog
RedirectMatch 410 html$

Les redirections avec le module mod_rewrite

#exemple avec WordPress
ErrorDocument 404 /404.html

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#Redirection 301
RewriteRule ^(.*)  http://www.domaine.com/$1   [QSA,L,R=301]

# Redirection 410, notez la grande variété des règles, c que nous permet le module mod_rewrite
# le [G] correspond au 410 
RewriteRule \.html - [G]

RewriteCond %{QUERY_STRING} add-to-cart
RewriteRule (.*) - [G]
RewriteCond %{REQUEST_URI} ^/debut_url
RewriteRule (.*) - [G]

#suite du fichier htaccess standar WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Retour en haut