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-статусов может показать точный путь ответа, который проходит запрос в стиле проверяющего.