HTTP 301
HTTP |
---|
![]() |
Методы запроса |
Поля заголовка |
Коды статуса ответа |
Методы безопасного контроля доступа |
Уязвимости безопасности |
В Всемирной паутине HTTP 301 — это код состояния HTTP-ответа для 301 Moved Permanently . Он используется для постоянного перенаправления, что означает, что ссылки или записи, возвращающие этот ответ, должны быть обновлены. Новый URL-адрес должен быть указан в поле «Местоположение», включенном в ответ. Перенаправление 301 считается лучшей практикой для перехода пользователей с HTTP на HTTPS .
- Если у клиента есть возможности редактирования ссылок, он должен обновить все ссылки на URL-адрес запроса.
- Ответ кэшируется, если не указано иное.
- Если метод запроса не был HEAD, объект должен содержать небольшую гипертекстовую заметку с гиперссылкой на новые URL-адреса.
- Если код состояния 301 получен в ответ на запрос любого типа, кроме GET или HEAD, клиент должен спросить пользователя перед перенаправлением.
Примеры
[ редактировать ]Запрос клиента:
GET /index.php HTTP/1.1
Host: www.example.org
Ответ сервера:
HTTP/1.1 301 Moved Permanently
Location: https://www.example.org/index.asp
Использование файла .htaccess
[ редактировать ]Чтобы устранить проблемы с несуществующими файлами или каталогами с помощью распределенного файла .htaccess:
Redirect 301 /calendar.html /calendar/
Redirect 301 /not_found.html /
Вот пример использования файла .htaccess для перенаправления незащищенного URL-адреса на безопасный адрес без начального «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]
Статический HTML
[ редактировать ]Перенаправление пользовательского каталога с использованием файла index.html:
<meta http-equiv="refresh" content="0; url=/" />
<p><a href="/">Home</a></p>
Использование языков программирования
[ редактировать ]Вот пример использования Perl CGI.pm :
print redirect("https://example.com/newpage.html");
Вот пример использования перенаправления PHP :
<?php
header("Location: https://example.com/newpage.html", true, 301);
exit;
Вот один из способов перенаправления с помощью Express.js :
app.all("/old/url", (req, res) => {
res.redirect(301, "/new/url");
});
Кэширующий сервер
[ редактировать ]Эквивалентно просто для конфигурации nginx :
location /old/url {
return 301 '/new/url';
}
Поисковые системы
[ редактировать ]И Bing , и Google рекомендуют использовать перенаправление 301 для изменения URL-адреса страницы, отображаемого в результатах поисковой системы, при условии, что URL-адрес будет постоянно меняться и не будет изменен снова в ближайшее время. [ 2 ] [ 3 ]
Технические детали
[ редактировать ]Код состояния HTTP 301 имеет несколько технических нюансов, которые следует учитывать разработчикам при реализации и управлении перенаправлениями:
Обработка браузера
[ редактировать ]- Поведение кэширования : многие веб-браузеры кэшируют 301 редирект. Это означает, что как только браузер пользователя обнаружит перенаправление 301, последующие запросы к исходному URL-адресу будут автоматически направляться на новый URL-адрес без обращения к серверу.
- Обновление закладок . Браузеры могут обновлять закладки, чтобы отразить новый URL-адрес после обнаружения перенаправления 301.
Серверная часть
[ редактировать ]- Apache : Apache имеет mod_alias и mod_rewrite для обработки 301 перенаправления. Использование обоих часто приводит к непредсказуемому поведению, поскольку модули не соблюдают правила других модулей. [ 4 ]
Сравнение с другими кодами состояния
[ редактировать ]- 302 Found : в отличие от 301, код состояния 302 указывает на временное перенаправление. Поисковые системы могут не передать значение SEO в новый URL. [ 5 ]
- 307 Временное перенаправление : аналогично 302, но гарантирует, что метод и тело не будут изменены при выполнении перенаправленного запроса.
- 303 См. «Другое» : используется, когда результатом POST или другого неидемпотентного метода запроса является ресурс, который следует получить с помощью GET.
Заголовок местоположения
[ редактировать ]- Обязательное включение : новый URL-адрес всегда должен указываться в поле «Местоположение» при отправке перенаправления 301. Отсутствие заголовка Location запутает браузеры и может привести к неожиданному поведению.
- Использование абсолютных URL-адресов . Хотя некоторые браузеры могут принимать относительные URL-адреса, использование абсолютных URL-адресов в заголовке Location является стандартом и обеспечивает единообразное поведение всех пользовательских агентов.
Влияние на SEO
[ редактировать ]- Передача ссылочного капитала . Поисковые системы обычно передают большую часть ссылочного капитала (или «сока ссылок») с исходного URL-адреса на целевой URL-адрес для 301 редиректа. [ 6 ]
- Задержки индексирования . Поисковые системы могут распознать перенаправление и соответствующим образом обновить свои индексы с задержкой.
Распространенные ловушки
[ редактировать ]- Множественные перенаправления . Использование нескольких последовательных перенаправлений 301 (от A к B, затем от B к C) может привести к увеличению времени загрузки страницы и снизить ценность SEO.
- Проблемы со смешанным контентом . При перенаправлении с HTTP на HTTPS убедитесь, что все ресурсы (изображения, сценарии, таблицы стилей) на странице также загружаются через HTTPS, чтобы предотвратить появление предупреждений о смешанном контенте.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Филдинг; и др. (июнь 1999 г.). 10.3.2 301 Переехал навсегда . IETF. п. 61. сек. 10.3.2. дои : 10.17487/RFC2616 . РФК 2616 .
- ^ «Инструмент перемещения сайта» . Справка и инструкции по Bing для веб-мастеров .
- ^ «301 редирект» . Справка Инструментов Google для веб-мастеров .
- ^ 301 перенаправление для Apache .htaccess: mod_rewrite
- ^ Коды статуса SEO и HTTP: комплексный анализ.
- ^ Объяснение 301 редиректа: как они влияют на SEO