HTTP 301

301 Movido Permanentemente é um código de status de resposta HTTP usado para redirecionamento permanente de URL, o que significa que links ou registros que atualmente utilizem a URL da qual a resposta foi recebida devem ser atualizados para a nova. A nova URL deve ser fornecida no campo Location incluído na resposta.

O redirecionamento 301 é considerado uma boa prática de atualização dos usuários, no caso de mudar de HTTP para HTTPS. RFC 2616 estabelece que:

Exemplo

Requisição do cliente:

GET /index.php HTTP/1.1
Host: www.example.org

Resposta do servidor:

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp

No exemplo a seguir é utilizado um arquivo .htaccess para redirecionar uma URL insegura para um endereço seguro sem o prefixo "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] 

No exemplo a seguir é utilizado um redirecionamento em PHP:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://example.com/newpage.html");
exit();
?>

Isso é igualmente simples em uma configuração nginx:

location /old/url/ {
    return 301 /new/url;
}

Mecanismos de busca

Tanto o Bing quanto o Google recomendam o uso de um redirecionamento 301 para alterar a URL de uma página tal como ela é mostrada nos resultados do mecanismo de pesquisa.

Referências

  1. ↑ «Proteger seu site com HTTPS». support.google.com. Consultado em 30 de janeiro de 2017
  2. ↑ How long do browsers cache HTTP 301s? - https://stackoverflow.com/questions/9130422/how-long-do-browsers-cache-http-301s
  3. ↑ Site Move Tool - Bing Webmaster Help & How-to - https://www.bing.com/webmaster/help/how-to-use-the-site-move-tool-bb8f5112
  4. ↑ 301 redirects - Google Webmaster Tools Help - http://support.google.com/webmasters/bin/answer.py?hl=en&answer=93633