Изучить доказательства аудита

Шесть локальных HTTP-примеров, а не сканирование вашего сайта. Ответы до и после проверены локально; индексация Google, трафик и позиции неизвестны.

Приоритет относится к цели примера, а не к универсальному SEO-баллу. Успешный ответ не доказывает индексацию.

A01 · Публичная страница содержит noindex

Приоритет: Высокий

Наблюдение
GET /launch возвращает 200 и meta robots noindex. Цель — публичная страница, доступная для поиска.
Почему это важно
Директива противоречит цели. Её наличие доказано, но неизвестно, прочитал ли её Google.
Предлагаемое действие
Уберите непреднамеренную директиву из публичного шаблона. Проверьте также заголовки и отрисованный HTML.
Ответственный
Веб-разработчик
Критерий приёмки
/fixed/launch возвращает 200 без noindex. Повторите проверку в production; авторизованную проверку URL проведите отдельно.

Подтверждено в локальном примере; масштаб в production и результаты поиска не проверены.

До

GET /launch
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

После

GET /fixed/launch
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/fixed/launch"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A02 · Robots мешает прочитать запрет индексации

Приоритет: Высокий

Наблюдение
robots.txt запрещает /blocked/, а /blocked/page содержит noindex. Цель — исключение из поиска, не ограничение доступа.
Почему это важно
Соблюдающий правила робот не прочитает директиву. Robots не заменяет аутентификацию.
Предлагаемое действие
Разрешите обход исключаемой страницы, сохранив noindex. Приватные материалы защищайте аутентификацией.
Ответственный
Ответственный за платформу
Критерий приёмки
/fixed/blocked/page вне запрещённого префикса и сохраняет noindex. Реальные правила хоста и последующую индексацию проверяйте отдельно.

Подтверждено в локальном примере; масштаб в production и результаты поиска не проверены.

До

GET /robots.txt
HTTP 200
Content-Type: text/plain; charset=utf-8

User-agent: *
Disallow: /blocked/


────────

GET /blocked/page
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

После

GET /robots.txt
HTTP 200
Content-Type: text/plain; charset=utf-8

User-agent: *
Disallow: /blocked/


────────

GET /fixed/blocked/page
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A03 · Постоянный редирект заканчивается ошибкой

Приоритет: Высокий

Наблюдение
/old-guide отдаёт 301 на /missing-guide, который возвращает 404. /guide считается подходящей заменой.
Почему это важно
Путь не доставляет ожидаемый контент. Сам редирект не подтверждает работоспособность цели.
Предлагаемое действие
Направьте старый адрес сразу на релевантную рабочую замену и обновите внутренние ссылки. Не перенаправляйте все удалённые страницы на главную.
Ответственный
Разработчик маршрутизации
Критерий приёмки
/fixed/old-guide даёт один 301, затем /guide с 200 и нужным контентом. После выкладки проверьте всю цепочку.

Подтверждено в локальном примере; масштаб в production и результаты поиска не проверены.

До

GET /old-guide
HTTP 301
Location: /missing-guide



────────

GET /missing-guide
HTTP 404
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

После

GET /fixed/old-guide
HTTP 301
Location: /guide



────────

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A04 · Canonical ведёт на постороннюю тему

Приоритет: Средний

Наблюдение
/variant указывает /other-topic как canonical, хотя дублирует /guide.
Почему это важно
Предпочтение противоречит связи контента. Выбор канонической страницы Google этим не установлен.
Предлагаемое действие
Подтвердите эквивалентность, согласуйте canonical, внутренние ссылки и sitemap с /guide. Разные по назначению страницы сохраняйте отдельно.
Ответственный
SEO-специалист и разработчик
Критерий приёмки
/fixed/variant указывает /guide, и цель работает. Выбор Google проверьте отдельно при наличии доступа.

Подтверждено в локальном примере; масштаб в production и результаты поиска не проверены.

До

GET /variant
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/other-topic"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

После

GET /fixed/variant
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A05 · Отсутствующая страница сообщает об успехе

Приоритет: Средний

Наблюдение
/gone возвращает 200 и заголовок Not found. Подходящей замены нет.
Почему это важно
Статус успеха не соответствует ошибочному контенту: кандидат soft 404, а не наблюдавшаяся классификация Google.
Предлагаемое действие
Возвращайте подходящий статус отсутствующего ресурса и уберите устаревшие внутренние ссылки. Оставьте полезную страницу ошибки.
Ответственный
Веб-разработчик
Критерий приёмки
/fixed/gone возвращает 404 с ошибкой. Будущее наблюдение в Search Console — отдельное доказательство.

Подтверждено в локальном примере; масштаб в production и результаты поиска не проверены.

До

GET /gone
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

После

GET /fixed/gone
HTTP 404
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

A06 · Рабочий контроль не требует выдуманной правки

Приоритет: Без изменений

Наблюдение
/guide возвращает 200, указывает себя как canonical и не блокируется этими robots-правилами. В ответе нет noindex.
Почему это важно
Локальные проверки пройдены, но качество, отрисовка, обнаружение, индексация и позиции не доказаны.
Предлагаемое действие
Зафиксируйте успешный контроль. Другие сигналы исследуйте при наличии конкретного вопроса.
Ответственный
Рецензент аудита
Критерий приёмки
Ответы до и после одинаковы. Сохраните доказательство, не придумывая проблему ради количества замечаний.

Подтверждено в локальном примере; масштаб в production и результаты поиска не проверены.

До

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

После

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Запустить примеры

Запустить примеры

Шесть локальных HTTP-примеров, а не сканирование вашего сайта. Ответы до и после проверены локально; индексация Google, трафик и позиции неизвестны.

Нужен Python 3.10 или новее. Распакуйте ZIP локально. Проверка запускает временный loopback-сервер, тестирует все случаи, выводит JSON и завершается. Внешние сайты не запрашиваются.

python3 audit_lab.py --verify

Для ручной проверки запустите сервер командой ниже, откройте локальные URL и завершите Ctrl+C. Если 8765 занят, выберите другой локальный порт.

python3 audit_lab.py --port 8765

http://127.0.0.1:8765/robots.txt

http://127.0.0.1:8765/launch

http://127.0.0.1:8765/fixed/launch

http://127.0.0.1:8765/blocked/page

http://127.0.0.1:8765/fixed/blocked/page

http://127.0.0.1:8765/old-guide

http://127.0.0.1:8765/missing-guide

http://127.0.0.1:8765/fixed/old-guide

http://127.0.0.1:8765/guide

http://127.0.0.1:8765/variant

http://127.0.0.1:8765/fixed/variant

http://127.0.0.1:8765/gone

http://127.0.0.1:8765/fixed/gone

http://127.0.0.1:8765/guide

http://127.0.0.1:8765/guide

Команды и пути — технические идентификаторы; текст отчёта переведён.

Результат индексации: неизвестен

Результат индексации: неизвестен