HTTP 301

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Код стану 301 протоколу HTTP (HTTP 301) — в протоколі HTTP, код стану, що отримується у відповідь від сервера в ситуації, коли запитаний ресурс був на постійній основі переміщено в нове місце розташування (англ. Moved Permanently), і який вказує на те, що поточні посилання, які використовують даний URL, повинні бути оновлені. Адреса нового місця розташування ресурсу вказується в полі Location одержуваного у відповідь заголовка пакета протоколу HTTP. В RFC 2616 зазначено, що:

  • якщо в клієнта є можливість редагування посилання, то йому слід оновити всі посилання на запитуваний URL;
  • запит кешується;[1]
  • у разі, якщо метод запиту був не 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 ^(.*)$ 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]

Перенаправлення з небажаних сайтів в .htaccess

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(site.ua%7Csite2.ua%7Csite3.ua)[NC]
RewriteRule \.(rar|zip)$ http://example.com/ [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;
}

Пошукові системи[ред. | ред. код]

Google рекомендує використовувати код стану 301 для зміни URL сторінки так, як вона показана в результатах пошуку.[2] Яндекс також рекомендує використовувати код стану 301 перенаправлення сторінок.[3]

З точки зору SEO, саме 301 редірект повідомляє пошуковим роботам, що потрібно об'єднати дві різні адреси в одну, де основною буде та, на яку й здійснюється перенаправлення.

Пошукові системи також рекомендують налаштовувати даний редірект з додаткових дзеркал на основне, наприклад, коли сайт одночасно доступний за адресами з www і без www або використовує захищений протокол (https), але при цьому також доступний з http.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. How long do browsers cache HTTP 301s?. stackoverflow.com. Архів оригіналу за 27 січня 2016. Процитовано 26 листопада 2015.
  2. Change page URLs with 301 redirects - Search Console Help. support.google.com. Архів оригіналу за 24 липня 2017. Процитовано 26 листопада 2015.
  3. Обработка редиректов (перенаправлений) — Вебмастер — Яндекс.Помощь. yandex.ru. Архів оригіналу за 7 квітня 2017. Процитовано 26 листопада 2015.

Посилання[ред. | ред. код]