Interested Article - HTTP 301

Код состояния HTTP 301 или Moved Permanently англ. «Перемещено навсегда») — стандартный код ответа HTTP , получаемый в ответ от сервера в ситуации, когда запрошенный ресурс был на постоянной основе перемещён в новое месторасположение, и указывающий на то, что текущие ссылки, использующие данный URL , должны быть обновлены. Адрес нового месторасположения ресурса указывается в поле Location получаемого в ответ заголовка пакета протокола HTTP. В указано, что:

  • если у клиента есть возможность редактирования ссылки, то ему следует обновить все ссылки на запрашиваемый URL;
  • запрос кэшируется ;
  • в случае, если метод запроса был не HEAD, то содержимое должно включать в себя небольшое гипертекстовое примечание с гиперссылкой на новый URL;
  • если код состояния 301 был получен в ответ на запрос любого другого типа, кроме GET или HEAD, то клиент должен спросить пользователя о перенаправлении.

Примеры

Запрос клиента:

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

Ответ сервера:

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

Примеры перенаправления для веб-сервера Apache :

Использование файла .htaccess для перенаправления на ресурс, работающий на протоколе шифрования SSL :

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$  [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$  [R=301,L]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$  [R=301,L]

Перенаправление с нежелательных сайтов в .htaccess

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^ [NC]
RewriteRule \.(rar|zip)$  [R,L]

Пример использования перенаправления в PHP :

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

Примеры перенаправления для веб-сервера nginx : - Перенаправление с веб-страницы.

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

Перенаправление с нескольких несуществующих веб-страниц или путей на главную.

location ~* (wp-*|admin*|plugins|install*|components|cli|logs|cache|modules|tmp) {
   return 301 $scheme://example.com;
}

Перенаправление с нежелательных сайтов. Помещается внутри server {}.

if ($http_referer ~* (site1.ru|site2.com|site3*) ) {
   return 301 ;
}

Перенаправление с www.

server {
   server_name www.example.com;
   return 301 ;
}

Перенаправление со старого домена на новый.

server {
  server_name www.example.com example.com;
return 301 $scheme://example.com$request_uri;
}

Поисковые системы

Google рекомендует использовать код состояния 301 для изменения URL страницы так, как она показана в результатах поиска .

Яндекс также рекомендует использовать код состояния 301 при перенаправлении страниц .

С точки зрения SEO, именно код состояния 301 сообщает поисковым роботам, что нужно объединить два разных адреса в один, где основным будет тот, на который и происходит перенаправление.

Поисковые системы также рекомендуют настраивать данное перенаправление с дополнительных зеркал на основное, например, когда сайт одновременно доступен по адресам с www и без www или использует защищённый протокол (https), но также доступен по http.

Примечания

  1. stackoverflow.com. Дата обращения: 26 ноября 2015. 27 января 2016 года.
  2. . support.google.com. Дата обращения: 26 ноября 2015. 24 июля 2017 года.
  3. . yandex.ru. Дата обращения: 26 ноября 2015. 7 апреля 2017 года.

Ссылки

См. также

Источник —

Same as HTTP 301