HTTP 301
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
[modifier | modifier le code]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
[modifier | modifier le code]Les moteurs de recherche Bing et Google recommandent la redirection 301 pour changer l'URL d'une page[4],[1].
Voir aussi
[modifier | modifier le code]Notes et références
[modifier | modifier le code]- (en) « Secure your site with HTTPS », sur support.google.com, Google (consulté le ).
- (en) Request for comments no 2616
- (en) « How long do browsers cache HTTP 301s? », sur Stack Overflow (consulté le ).
- (en) « Site Move Tool - Bing Webmaster Help How-to » (consulté le ).