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>