Проверка битых ссылок выглядит как задача с одним ответом: запустил инструмент, получил список. На своём сайте три проверки дали три разных ответа, и верного среди них не было.
Три ответа на один вопрос
Замер 7 сентября 2026 года, один и тот же сайт в один и тот же день.
| Кто проверял | Ответ |
|---|---|
| Наш штатный скрипт по собранным страницам | 0 битых |
| Яндекс.Вебмастер, раздел внутренних ссылок | 42 битых |
| Строгий обход живого сайта | 0 битых из 614 адресов, но три ссылки не туда |
Разница не в качестве инструментов: каждый смотрит в своё место.
Почему скрипт видит не всё
Скрипт читает собранные страницы и берёт адреса из атрибута href в двойных
кавычках. Записанное иначе для него не существует.
Строгий обход живого сайта нашёл на тех же страницах:
- 614 уникальных внутренних адресов против 396 у скрипта;
- 284 адреса в JSON-LD — разметке для поисковых систем;
- 82 адреса в инлайновых стилях;
- 789 якорей, 238 адресов почты и 230 телефонов, которые проверять кодом ответа бессмысленно.
Разница между 396 и 614 — не найденные ошибки, а невидимая зона. Однажды она
уже сработала: 16 августа Вебмастер нашёл 42 битые ссылки на data:-адрес,
записанный в инлайновом стиле. Скрипт
их не видел: он не смотрел туда, где они лежали.
Почему Вебмастер показывает исправленное
Сегодня Вебмастер по-прежнему показывает 42 битые ссылки. Мы проверили каждую: из 22 уникальных адресов 21 отвечает кодом 200, а последний вёл на удалённую страницу, ссылки на которую в живых страницах и в карте сайта уже нет.
Ответ в датах. Обнаружены записи с 21 июня по 16 августа, последний доступ робота к источнику — не позже 16 августа. Вебмастер не врёт: он показывает состояние на день последнего обхода. Пока робот не перечитает страницу, запись висит.
Отсюда практический вывод: список битых ссылок в панели — это история, а не текущее состояние. Прежде чем чинить по нему, проверьте адреса сами; и наоборот — исправив, не ждите, что список очистится сам к утру.
Ссылка, которую не найдёт ни одна проверка
Строгий обход дал ноль битых внутренних адресов из 614. Но он же показал три
внешние ссылки на example.com — служебный домен для примеров из документации.
Они стояли в нашей же статье про canonical: автор написал пример с адресом, а
разметка превратила его в настоящую ссылку.
example.com отвечает кодом 200. Значит, ни проверка кодов ответа, ни
Вебмастер, ни наш скрипт никогда бы на неё не пожаловались. Формально ссылка
рабочая, фактически — уводит читателя на заглушку IANA.
Поправили в тот же день: адреса в примерах оформлены как код, а не как ссылка. Этот класс дефектов ловится только чтением, а ложные срабатывания проверок — его зеркальная половина.
Пять классов битых ссылок и кто их находит
Разложим по классам — и сразу видно, почему один инструмент не закрывает задачу.
| Класс | Пример | Кто находит |
|---|---|---|
| Внутренняя ссылка на удалённую страницу | /systems/ после удаления раздела | скрипт по href, панель вебмастера |
Адрес не в href, а в стиле или разметке | url(data:image/svg+xml…) в инлайновом стиле | только обход, который смотрит шире href |
| Ссылка на чужой домен, который умер | старый сервис в подвале | только проверка внешних адресов, а её обычно нет |
| Ссылка отвечает 200, но ведёт не туда | пример с example.com в тексте статьи | никто, кроме человека |
| Ссылка на несуществующий якорь | #tarify на странице без такого блока | почти никто: якоря проверяют единицы инструментов |
Три нижние строки — это зона, где автоматика молчит. Наш собственный случай из четвёртой строки жил на опубликованной странице, пока мы не прочитали её глазами при подготовке этого замера.
Что делать с каждым исходом
| Что показала проверка | Что делать |
|---|---|
| Скрипт молчит, панель показывает битые | проверить адреса самому: панель показывает состояние на день последнего обхода |
| Панель молчит, скрипт находит | чинить: скрипт смотрит текущую сборку, а робот придёт позже |
| Оба молчат | не расслабляться: ни один из них не смотрит внешние ссылки и якоря |
| Битые ссылки в шапке или подвале | чинить в первую очередь: они повторяются на всех страницах разом |
| Битая ссылка одна и на одной странице | обычная правка, но стоит проверить, откуда взялся адрес |
Строка про шапку и подвал не теоретическая: одна вложенная ссылка у нас перерисовывала 174 страницы, и цена ошибки в общем блоке всегда умножается на число страниц.
Как проверить свой сайт честно
- Соберите адреса шире, чем
href. Инлайновые стили,src, JSON-LD — там тоже бывают адреса, и робот их видит. - Проверяйте на живом сайте, а не в исходниках. Сборка может добавить или потерять ссылку, а видит поисковик именно отданную страницу.
- Сверяйтесь с панелью, но не верьте ей на слово. Что показывает диагностика Вебмастера — разбирали отдельно; там же про даты, из-за которых записи выглядят свежее, чем есть.
- Отделяйте «не отвечает» от «ведёт не туда». Первое находит машина, второе — только человек.
Коротко
Три проверки одного сайта в один день дали ноль, 42 и «ноль, но три ссылки не
туда». Скрипт не видел ничего вне href, Вебмастер показывал состояние на день
последнего обхода, а настоящая ошибка отвечала кодом 200 и потому была невидима
для обоих. Числу битых ссылок нельзя верить, не зная, что именно считали.
