R023b — canonical на битый URL (404/500)
Новое правило: canonical-URL отдаёт 4xx/5xx. Открывает критическую находку на странице. Появилось 2026-05-02.
Что проверяет
Если в <head> страницы прописан <link rel="canonical" href="...">, и этот canonical-URL отдаёт HTTP 4xx/5xx — поисковик считает что страница «отдаёт авторитет» несуществующей версии. Результат: и оригинальная страница, и canonical целиком пропадают из индекса.
Когда срабатывает
- Canonical отличается от final_url страницы (self-canonical пропускаем).
- Canonical имеет полный URL (хост указан).
- HEAD-запрос на canonical вернул HTTP ≥ 400.
Не срабатывает (защита от false positive):
- Self-canonical (canonical == самой странице).
- Сетевая ошибка при HEAD (timeout, connection refused) — canonical может быть просто временно недоступен.
- Относительный canonical (это R022).
Severity
High, priority=2. Это серьёзнее чем «нет canonical» (R005, Medium) — здесь не только теряется сигнал каноничности, но ещё и страница активно «голосует» за битую версию.
Когда запускается
В site-level pass — после прогона всех страниц сайта. HEAD-запросы делаются только на уникальные canonical-URL (in-memory dedup), так что если 100 страниц ссылаются на один canonical — это 1 запрос, не 100.
Как починить
- Если canonical неправильный — поправить шаблон: либо self-canonical, либо canonical на реальный URL.
- Если canonical правильный, но страница удалена — вернуть страницу по canonical-URL, либо изменить canonical на действительную страницу.
- Если canonical избыточный (страница уникальная) — убрать тег вообще.
Производительность
На сайте с 1000 страниц и 50 уникальными canonical — ~30-60 секунд (HEAD-запросы последовательные). На текущих сайтах sa <100 уникальных canonical — несколько секунд.