Avant toute chose
Après avoir lu l’excellent article d’Antonin sur les redirections d’URL, voyons maintenant comment les mettre en place :
Serveur Apache
Si votre site tourne sous un serveur Apache, il faut modifier le fichier [cci_bash].htaccess[/cci_bash] qui doit être présent à la racine de votre site. S’il n’y est pas, il suffit de le créer.
Redirection permanente d’une page (old.html) vers une autre (new.html)
Redirect 301 /old.html /new.html
Redirection d’un dossier au complet
RedirectMatch 301 /old(.*) /new/$1
Redirection permanente vers un autre domaine
Redirect 301 /old/ http://domain.com/new/
Forcer l’ajout de www à l’url du site
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
Enlever www de l’url
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule (.*) http://example.com/$1 [R=301,L]
Redirection 307 (contenu déplacé mais non remplacé)
Utilisé en général pour mettre en place une page de maintenance.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]
Quelque soit la page demandée, tous les visiteurs seront redirigés vers la page maintenance.html
Cela est très pratique pendant que vous faites des modifications sur votre site mais vous ne pourrez pas voir le résultat car vous aussi serez redirigé vers la page maintenance.html.
Avec le code ci-dessous, si vous remplacez les xxx par votre adresse ip (que vous pouvez trouver en allant sur fr.vpnmentor.com/outils/ipinfo/, vous seul aurez accès au site.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteCond %{REMOTE_HOST} !^xxx\.xxx\.xxx\.xxx
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]
Serveur NGINX
Pour les sites qui tournent sous NGINX, il n’y a pas possibilité d’utiliser les fichiers .htaccess pour configurer les redirections. Il faut directement modifier le fichier de configuration du serveur. La plupart du temps, il faut demander à l’hébergeur de le faire.
Sous Ubuntu par exemple, ces fichiers se trouvent sous [cci_bash]/etc/nginx/sites-available[/cci_bash]
Une redirection temporaire s’écrit
server {
. . .
server_name www.domain1.com;
rewrite ^/(.*)$ http://www.domain2.com redirect;
. . .
}
Une redirection permanente s’écrit
rewrite ^/$ http://www.domain2.com permanent;
rewrite ^/(.*)$ http://www.domain2.com/$1 permanent;
Voir ce site pour davantage d’informations sur la redirection avec NGINX
Redirection dans le code PHP
Cette méthode est moins conseillée mais si vous ne pouvez pas faire autrement, ça peut dépanner
À placer au tout début d’un fichier:
<?php
header ('HTTP/1.1 301 Moved Permanently');
header( "http://www.new-website.com" );
?>
Redirection par balise Meta
<meta http-equiv="refresh" content="0; url=http://www.new-website.com" />