Трассировка редиректов
У сайта четыре входные двери: http и https, каждая с www и без. Эта трассировка проходит через все четыре, отмечает каждый переход и проверяет, что все они приводят к одному адресу HTTPS.
Один сайт, четыре адреса
Человеку все это кажется одним и тем же местом:
http://example.com/ http://www.example.com/ https://example.com/ https://www.example.com/
Браузер или поисковый робот видит четыре разных источника. Схема может отличаться, имя хоста может отличаться, и ничто в устройстве веба не требует, чтобы они отдавали одно и то же. А печатная листовка, старая закладка и ссылка в пятилетнем сообщении на форуме будут использовать каждая свой вариант.
Связывает их редирект. Сервер не отдает страницу, а отвечает трехзначным статусом из диапазона 300 и заголовком Location с другим адресом, и браузер идет туда. Аккуратный сайт выбирает один из четырех как настоящий адрес, а остальные три отвечают одним редиректом на него.
Коды ответа, которые перемещают посетителей
| Код | Значение | Когда использовать |
|---|---|---|
301 | Перемещено навсегда | HTTP на HTTPS, www на без www, переименованная страница. Браузеры его кэшируют, а поисковики переносят запись в индексе на новый адрес. |
308 | Навсегда, метод сохраняется | То же, что 301, но POST остается POST. Распространен на новых платформах. |
302 | Найдено (временно) | Обход через вход в аккаунт, страница техработ, A/B-тест. |
307 | Временно, метод сохраняется | То же, что 302, для форм и API. Браузеры также показывают 307 при переходе на HTTPS по HSTS, который выполняют сами. |
303 | Смотреть другое | Отправка браузера на страницу результата после отправки формы. |
Трассировка выводит код каждого перехода в колонке «Путь», в том порядке, в каком их вернул сервер.
Как оценивается трассировка
Наш сервер запрашивает каждый из четырех адресов и проходит до восьми редиректов. Адрес, к которому приходит большинство, считается главным адресом сайта, и каждая начальная точка сравнивается с ним.
- Конечный адрес / 1 переход
- Вариант и есть главный адрес или попадает на него одним редиректом. К этому и надо стремиться.
- 2 перехода и больше
- Цепочка, например
http://wwwнаhttps://www, затем наhttps://. Работает, но каждый лишний переход стоит полного круга запроса, на телефоне часто от 100 до 300 ms. - Временный редирект
- По пути встречается 302, 303 или 307. Если правило задумано постоянным, поисковики не понимают, какой адрес оставить.
- Другой адрес
- Вариант приводит в другое место, то есть сайт существует в двух версиях. Оценивается как ошибка.
- Сбой
- Нет ответа. Для голого домена это ошибка, для
wwwпредупреждение.
Конечный адрес без HTTPS это всегда ошибка. На конечной странице трассировка также ищет в HTML смешанное содержимое, то есть скрипты, таблицы стилей, фреймы, адреса форм, картинки и медиа, которые все еще указаны через http://. Первые четыре вида браузеры блокируют, поэтому это ошибки, а картинки и медиа предупреждения. Наконец, она читает ссылку rel="canonical" и предупреждает, если в ней указан не тот хост, к которому ведут редиректы.
Одно правило вместо нескольких
Цепочки появляются, когда два уровня делают по половине работы, например панель хостинга принудительно включает HTTPS, а плагин затем убирает www. Отправляйте каждый вариант сразу на конечный адрес одним правилом.
nginx
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
return 301 https://example.com$request_uri;
}Apache (.htaccess)
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]В Cloudflare включите «Always Use HTTPS» и добавьте одно правило редиректа для имени хоста. Имени www нужна своя DNS-запись, и оно должно входить в сертификат, иначе посетители до редиректа просто не дойдут. Это проверяет инспектор TLS-сертификата.
Трассируется только главная страница и только редиректы, отправленные кодами HTTP. Редирект через JavaScript или тег <meta http-equiv="refresh"> не прослеживается, а для внутренних страниц могут действовать другие правила. Смешанное содержимое ищется в исходном HTML, поэтому ресурсы, которые скрипты добавляют позже, остаются незамеченными.
Частые вопросы
Чем редирект 301 отличается от 302?
301 говорит, что переезд постоянный. Браузеры его запоминают, а поисковики заменяют старый адрес новым. 302 говорит, что исходный адрес по-прежнему правильный, а обход может закончиться. Для правил HTTPS и www используйте 301 или 308.
Использовать на сайте www или нет?
Для позиций в поиске это неважно. Голый домен короче. Вариант с www может быть CNAME, что требуется в некоторых конфигурациях CDN и хостинга. Важно, чтобы один перенаправлял на другой.
Вредят ли цепочки редиректов SEO?
Цепочка из двух-трех переходов все еще передает сигналы ранжирования, а Googlebot проходит до десяти переходов. Теряется скорость для каждого посетителя, пришедшего по длинному пути, и каждое лишнее звено цепочки это еще одно место, которое может сломаться.
Что такое смешанное содержимое?
Страница HTTPS, которая загружает ресурс по обычному http://. Браузеры блокируют такие скрипты, таблицы стилей и фреймы, а картинки пытаются перевести на HTTPS. Обычно это остаток переезда на HTTPS, после которого старые адреса остались в содержимом.
Я исправил редирект, но браузер все равно идет на старый адрес. Почему?
Браузеры кэшируют ответы 301, иногда на месяцы. Проверьте в приватном окне или командой curl -I http://example.com либо запустите трассировку здесь еще раз. Наш сервер не хранит кэш между проверками.