Aller au contenu

HTTP 301

Un article de Wikipédia, l'encyclopédie libre.

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.

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].

Notes et références

[modifier | modifier le code]
  1. a et b (en) « Secure your site with HTTPS », sur support.google.com, Google (consulté le ).
  2. (en) Request for comments no 2616
  3. (en) « How long do browsers cache HTTP 301s? », sur Stack Overflow (consulté le ).
  4. (en) « Site Move Tool - Bing Webmaster Help How-to » (consulté le ).