TrueURL
TrueURL

Меню

Бесплатная проверка редиректов

Проверка meta refresh

Не каждый редирект — это HTTP-код ответа. TrueURL читает HTML каждой страницы в цепочке и находит теги meta refresh и JavaScript-редиректы вместе с их целевым URL и задержкой.

Что такое редирект через meta refresh?

Meta refresh — это HTML-тег, который указывает браузеру загрузить другой URL через заданное число секунд:

<meta http-equiv="refresh" content="0; url=https://example.com/new-page">

С задержкой 0 он работает как обычный редирект. С более долгой задержкой посетители сначала видят страницу — как на старых страницах «Сейчас вы будете перенаправлены». JavaScript-редиректы делают то же самое с помощью кода вроде location.href = '...' или location.replace('...'). И то и другое — клиентские редиректы: сервер отвечает 200 OK, а перенаправляет уже браузер.

Как TrueURL обнаруживает клиентские редиректы

В каждом HTML-ответе с кодом 2xx TrueURL просматривает первые 256 КБ страницы в поисках тега meta refresh и простых безусловных JavaScript-редиректов. HTTP-заголовок Refresh, который работает так же, как meta refresh, тоже распознается. Найдя такой редирект, TrueURL показывает тег или фрагмент скрипта, полный целевой URL и задержку, помечает переход как meta refresh или JavaScript и продолжает цепочку с целевого адреса. Refresh, который просто перезагружает ту же страницу, — не редирект, и он игнорируется.

В дополнительных настройках можно отключить следование любому из этих типов, чтобы посмотреть на саму страницу. TrueURL не выполняет JavaScript: он читает скрипты на странице и распознает редиректы на фиксированный URL, которые всегда срабатывают при загрузке страницы — сразу или в setTimeout верхнего уровня. Редиректы, которые зависят от условия (например, клика, выбора в окне согласия или размера экрана) или формируют целевой URL в коде, не обнаруживаются. Используйте GET, а не HEAD: в ответах на HEAD нет тела, которое можно было бы проверить.

Как поисковые системы относятся к клиентским редиректам

  • Мгновенный meta refresh (задержка 0): Google считает его постоянным редиректом, как 301.
  • Meta refresh с задержкой: считается временным редиректом, поэтому в индексе обычно остается исходный URL.
  • JavaScript-редиректы: Google видит их только после рендеринга страницы, а он может произойти намного позже сканирования. Многие другие поисковые роботы и большинство ботов предпросмотра ссылок вообще не выполняют JavaScript.

Google рекомендует серверные редиректы везде, где их можно настроить, а meta refresh — как запасной вариант, например на статическом хостинге, который не умеет отправлять 301.

Доступность и удобство для пользователей

Редиректы с задержкой — проблема для доступности: люди, которые пользуются скринридерами или просто читают медленно, теряют место, где остановились, когда страница неожиданно меняется. В WCAG meta refresh с задержкой указан как ошибка (F40), а мгновенный редирект с задержкой 0 — как допустимая техника (H76).

Если без редиректа в HTML не обойтись, используйте задержку 0, добавьте тег canonical с новым URL и разместите на странице видимую ссылку на него для посетителей, чей браузер не выполняет refresh.

Руководства

Частые вопросы

Передает ли meta refresh ссылочный вес так же, как 301?

Мгновенный meta refresh (задержка 0) Google считает постоянным редиректом, поэтому на практике он работает почти как 301. Refresh с задержкой считается временным. Другие поисковые роботы могут обрабатывать meta refresh менее надежно, поэтому используйте серверный 301 редирект, если хостинг это позволяет.

Почему проверка редиректов показывает 200, хотя в браузере страница перенаправляет?

Редирект происходит в HTML-коде или JavaScript страницы, а не в HTTP-ответе. Инструменты, которые следуют только кодам ответа, например curl -L, останавливаются на странице с кодом 200. TrueURL анализирует содержимое страницы и показывает клиентский редирект как отдельный переход.

Какую задержку указывать в meta refresh?

0, если цель — редирект. Любая задержка делает его временным редиректом для Google, заставляет посетителей ждать и создает проблемы с доступностью. Задержка имеет смысл только на странице, которая сначала должна показать сообщение, и на такой странице также должна быть понятная ссылка для продолжения.

Может ли TrueURL обнаружить любой JavaScript-редирект?

Нет, только простые безусловные редиректы с фиксированным целевым URL в HTML-коде страницы, например location.href = '...', window.location = '...' или location.replace('...'), в том числе внутри setTimeout верхнего уровня. Для редиректов во внешних файлах скриптов, за условиями, запускаемых действиями пользователя или с вычисляемым URL нужен настоящий браузер. Если цепочка останавливается на странице, которая, как вы знаете, перенаправляет, скорее всего, дело в этом.

Зачем сайту meta refresh вместо 301?

Обычно потому, что он не может отправлять HTTP-редиректы: статический хостинг без правил редиректов, конструктор сайтов или старая CMS. Некоторые сервисы сокращения ссылок и трекеры кликов тоже используют HTML-редиректы, чтобы сначала запустить скрипты аналитики или управлять тем, какой реферер увидит сайт назначения.

Обнаруживает ли HEAD-запрос meta refresh?

Нет. Ответ на HEAD содержит заголовки, но не тело, поэтому HTML для анализа просто нет. TrueURL предупреждает, если вы проверяете методом HEAD; для этого инструмента используйте GET.