HTTP 301
code HTTP indiquant une redirection permanente
From Wikipedia, the free encyclopedia
HTTP 301 Moved Permanently (ou 301 redirect) est un code de réponse HTTP qui est utilisé pour une redirection d'URL permanente, c'est-à-dire pour indiquer que les liens actuels ou les enregistrements qui utilisent l'URL pour lesquels il a été reçu doivent être modifiés. Le nouvel URL doit être donné dans le champ « Location » inclus dans la réponse. Le code « 301 redirect » est considéré comme le meilleur moyen de mettre à niveau les utilisateurs de HTTP vers HTTPS[1].
La RFC 2616[2] définit que :
- Si un client a la possibilité d'éditer les liens, il doit mettre à jour les références vers l'URL demandée.
- La réponse peut être mise en cache[3].
- La réponse doit contenir une petite note hypertexte avec un hyperlien vers le/les nouveaux URL(s), sauf si la méthode de la demande était HEAD.
- Si le statut 301 est reçu en réponse à une requête autre que GET ou HEAD, le client doit demander à l'utilisateur avant de le rediriger.
Exemple
Requête Client:
GET /index.php HTTP/1.1 Host: www.example.org
Réponse serveur:
HTTP/1.1 301 Moved Permanently Location: http://www.example.org/index.asp
Voici un exemple utilisant les fichiers .htaccess pour rediriger un URL non sécurisé vers une adresse sécurisée sans le "www":
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
Voici un exemple utilisant une redirection PHP
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://example.com/newpage.html");
exit();
?>
Voici un exemple d'une simplicité équivalente pour une configuration nginx:
location /old/url/ {
return 301 /new/url;
}
Moteurs de recherche
Les moteurs de recherche Bing et Google recommandent la redirection 301 pour changer l'URL d'une page[4],[1].