Broken Link Checker

Проверка битых ссылок получает страницу, собирает каждую ссылку и картинку на ней и запрашивает каждую, чтобы увидеть, что на самом деле получит посетитель. Вставьте ниже URL одной страницы: каждая доступная для запроса ссылка проверяется и классифицируется как OK, перенаправление, битая, ошибка сервера, тайм-аут или недоступна; ссылки, которые никогда нельзя запрашивать — mailto:, tel: и фрагменты внутри страницы — перечисляются, но не запрашиваются; а всё, что разрешается в частный или заблокированный адрес, сообщается как пропущенное и никогда не запрашивается. Один запуск — одна страница, не более 300 ссылок, и если запуск останавливается раньше времени, частичный результат помечается как частичный — и никогда не выдаётся за полный.

Последнее обновление:

Ограничения, прямо: один запуск — одна страница (это не обход всего сайта), не более 300 проверяемых ссылок за запуск, а запуск на странице с большим числом ссылок может занять до примерно 25 секунд. Эта проверка ограничена 5 запусками в час с одного адреса.

Между проверками всё появляются новые мёртвые ссылки? Следите бесплатно с myeventwatch — оповещения об истечении и простоях, карта не нужна.

Что делает эта проверка — и чего не делает

Когда вы отправляете страницу, проверяющий получает её один раз, разбирает HTML и собирает цели её ссылок <a> и картинок <img>, разрешая относительные URL относительно конечного адреса страницы после любых перенаправлений. Затем каждый уникальный веб-адрес запрашивается по очереди: перенаправления отслеживаются и подсчитываются, поэтому ссылка, которая работает только после двух прыжков, сообщается как перенаправление с числом прыжков, а не как чистое OK. Результат — вердикт по каждой ссылке с конечным HTTP-кодом состояния: то самое свидетельство, которое встретит браузер, поисковый робот или раздражённый посетитель при щелчке.

Три вида ссылок намеренно никогда не запрашиваются. Адреса с невеб-схемой — mailto:, tel:, javascript: и их родственники — вообще не являются HTTP-запросами, поэтому они перечисляются в разделе «не запрошено» с указанием причины, вместо того чтобы выдумывать им статус. Чисто фрагментные ссылки, такие как #section, указывают внутрь страницы, которая у проверяющего уже есть, поэтому запрашивать нечего. А любая ссылка, чей хост разрешается в частный, петлевой или иным образом заблокированный адрес, сообщается как пропущенная: публичная проверка никогда не должна быть пригодна как рычаг в чужую внутреннюю сеть, поэтому такие цели называются, подсчитываются и строго оставляются в покое.

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

Начните с битых ссылок, указывающих внутрь вашего собственного сайта: 404 на внутренней ссылке — это дверь под вашим контролем, которая открывается в никуда, и её исправление — восстановить страницу, поправить URL или нацелить ссылку на её замену — помогает каждому посетителю и каждому роботу сразу. Далее идут цепочки перенаправлений: одно перенаправление после переезда — норма, но два и более прыжков замедляют каждый щелчок и тратят усилия обхода, поэтому обновите ссылку на конечный адрес; трассировщик цепочек HTTP-статусов покажет полный путь по прыжкам, когда вам нужно его увидеть. Битые картинки — третьими: они редко мешают чтению, но из-за них здоровая страница выглядит заброшенной. Тайм-ауты и ошибки сервера заслуживают повторной проверки перед операцией: 5xx или тайм-аут могут быть одной занятой минутой, а не мёртвой страницей, тогда как хост, остающийся недоступным, — это проблема DNS или хостинга, а не ссылок.

Этот инструмент намеренно проверяет одну страницу за запуск. Обход всего сайта — другой инструмент: ему место в отчётах вашей CMS, в журналах сервера или в Search Console, — и притворяться, что проверка одной страницы покрывает весь сайт, было бы нечестно. Запускайте эту проверку для главной страницы, ключевых посадочных страниц и любой страницы, которую вы только что переработали, перенесли или урезали, и прочитайте сопроводительное руководство находите битые ссылки раньше ваших посетителей о том, когда проверять и в каком порядке исправлять. За запуск проверяется не более 300 ссылок; если страница несёт больше или запуск достигает своего лимита времени, результат говорит об этом и помечается как частичный, а не обрезается молча.

Что означает каждый статус результата

OKСсылка была запрошена, и конечный ответ был успехом (2xx) без необходимости перенаправления — посетитель приземляется точно туда, куда указывает ссылка.
ПеренаправлениеСсылка работает, но только после одного или нескольких перенаправлений (3xx). Число показывает, сколько прыжков было пройдено до конечного успеха.
Битая (4xx)Сервер ответил ошибкой клиента — чаще всего 404 Не найдено или 410 Удалено навсегда. Страницы, которую обещает ссылка, там нет.
Ошибка сервера (5xx)Целевой сервер не ответил должным образом (500, 502, 503, 504 и родственники). Ссылка может быть в порядке; сервер — нет: перепроверьте, прежде чем что-либо менять.
Тайм-аутЦель не ответила в пределах времени проверяющего. Относитесь к единичному тайм-ауту как к «медленно или занято», а к повторяющемуся — как к настоящей проблеме.
НедоступнаСоединение вообще не удалось установить — сбой DNS, отказ в соединении или мёртвый хост. В беде сам адрес, а не только одна страница на нём.
Пропущена (заблокирована)Ссылка разрешается в частный, петлевой или иным образом заблокированный адрес, поэтому она была сообщена, но никогда не запрашивалась. Публичная проверка не должна зондировать внутренние сети.

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

Эта проверка обходит весь мой сайт?

Нет. Она проверяет ровно одну страницу за запуск — ту, что вы вставили, — плюс каждую ссылку и картинку на этой странице, до 300 проверенных ссылок. Она не идёт по ссылкам дальше, чтобы обойти остальной сайт. Для обзора всего сайта используйте свою CMS, журналы сервера или Search Console, а эту проверку запускайте для самых важных страниц: главной, ключевых посадочных и всего недавно переработанного или перенесённого.

Почему некоторые ссылки перечислены, но помечены как «не запрошено»?

Потому что запрашивать их было бы бессмысленно или неправильно. Ссылки с невеб-схемой — mailto:, tel:, javascript: и подобные — не являются HTTP-запросами, поэтому статуса для сообщения нет; фрагментные ссылки (#section) указывают внутрь уже полученной страницы. Оба вида перечисляются с причиной, чтобы сходились счета: найденные ссылки всегда равны проверенным плюс перечисленным, но не запрошенным плюс любому остатку, до которого частичный запуск не добрался.

Почему ссылка вернулась как пропущенная?

Её хост разрешается в частный, петлевой или иным образом заблокированный адрес. Публичная проверка ссылок, которая запрашивала бы такие цели, могла бы использоваться для зондирования внутренних сетей — маршрутизаторов, панелей администратора, конечных точек облачных метаданных, — поэтому эта проверка сообщает такие ссылки как пропущенные и никогда их не запрашивает. Если ссылка находится на вашей собственной странице и указывает на внутренний адрес, это обычно сама по себе ошибка, которую стоит исправить: ваши посетители туда тоже не попадут.

Результат помечен как частичный. Что случилось?

Запуск остановился до того, как была проверена каждая доступная ссылка, — страница несла больше лимита в 300 ссылок, или запуск достиг своего лимита времени. Сводка всегда показывает, сколько ссылок проверено из скольких доступных, а отсутствующие в таблице ссылки не проверены, а не здоровы. Запустите проверку той же страницы снова и относитесь к полученным вердиктам как к действительным: битая ссылка, найденная в частичном запуске, всё равно битая.

Ссылка показывает ошибку сервера, но у меня открывается нормально. Почему?

Ошибки сервера и тайм-ауты часто преходящи: цель была занята, перезапускалась или ограничивала запросы в момент проверки — а минуту спустя в порядке. Перезапустите проверку, прежде чем менять ссылку, сообщающую 5xx или тайм-аут. Если одна и та же ссылка раз за разом не проходит, а в вашем браузере открывается нормально, разница часто в географии, кэшировании или обращении с ботами на стороне цели — трассировщик цепочек HTTP-статусов может показать точный путь ответа, который проходит запрос в стиле проверяющего.