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