HTTPQUERY
Français

301 Moved Permanently

Utilisation

Lorsque le code de statut 301 Moved Permanently est reçu, les clients sont censés mettre à jour les liens enregistrés vers la nouvelle URI. Cette nouvelle URI est indiquée par l’en-tête Location et sert au client pour la redirection automatique.

Cette réponse est courante lorsqu’un serveur migre vers un nouveau domaine ou réorganise sa structure de fichiers interne sans prévoir de revenir à l’ancienne URI.

Changement de méthode

Pour des raisons historiques, les agents utilisateurs sont autorisés à transformer POST en GET lors d’une redirection 301. La plupart des navigateurs font exactement cela, ce qui fait de ce changement de méthode un comportement standard de fait. Le code de statut 308 a été créé précisément pour garantir sans ambiguïté la préservation de la méthode. Pour les API et les applications modernes, préférez 308 pour les redirections permanentes lorsque la méthode d’origine doit être conservée.

Maintenez les redirections 301 actives pendant au moins un an, idéalement indéfiniment. Google reconnaît rapidement les 301, mais le transfert complet des signaux prend plusieurs semaines. Les navigateurs mettent agressivement en cache les réponses 301 selon les directives Cache-Control. En l’absence d’en-têtes de cache explicites, la redirection persiste indéfiniment dans le cache du navigateur. Supprimer une 301 côté serveur n’efface pas les redirections déjà mises en cache dans les navigateurs.

Remarque

Utilisez 301 lorsque l’ancienne URL doit cesser définitivement de servir du contenu. Utilisez rel=“canonical” lorsque les deux URL continuent de servir du contenu mais que l’une est préférée pour l’indexation. Une 301 force tout le trafic vers la nouvelle URL, tandis que canonical n’est qu’une indication que les moteurs de recherche suivent sans y être contraints.

Impact SEO

Google considère une 301 comme un signal fort indiquant que la cible de la redirection est l’URL privilégiée. Les signaux de classement sont transférés de l’ancienne URL vers la nouvelle. Utilisez 301 pour les changements d’URL permanents, les migrations de domaine et le passage à HTTPS. Google suit jusqu’à 10 sauts de redirection. Le contenu des URL de redirection intermédiaires est ignoré. Rediriger des URL supprimées vers la page d’accueil ou vers une page de catégorie générique au moyen d’une 301 est détecté par Google comme un soft 404.

Exemple

Le client demande une ressource HTML. Le serveur répond par 301 Moved Permanently et indique la nouvelle URI dans l’en-tête Location. Un corps de message invite à mettre à jour les favoris, même si les navigateurs modernes redirigent immédiatement.

Requête

GET /news.html HTTP/1.1
Host: example.com

Réponse

HTTP/1.1 301 Moved Permanently
Location: http://example.com/feeds/news.html
Content-Type: text/html; charset=UTF-8
Content-Length: 150

<h1>The Newsfeed has moved</h1>
<body>
The newsfeed has moved permanently to
<a href=/feeds/news.html>here</a>.
Please update your bookmarks.
</body>

Références de code

.NET

HttpStatusCode.MovedPermanently

Rust

http::StatusCode::MOVED_PERMANENTLY

Rails

:moved_permanently

Go

http.StatusMovedPermanently

Symfony

Response::HTTP_MOVED_PERMANENTLY

Python3.5+

http.HTTPStatus.MOVED_PERMANENTLY

Java

java.net.HttpURLConnection.HTTP_MOVED_PERM

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_MOVED_PERMANENTLY

Angular

@angular/common/http/HttpStatusCode.MovedPermanently