Животные меняются при загрузке страницы
Исправление ошибок 404 с Screaming Frog и Python‑скриптами: практический чек‑лист
Карточки, чек-листы, таблицы и примеры помогают быстро найти нужный ответ.
Оптимизация 404‑ошибок – один из ключевых пунктов технического SEO. На этом гиде мы покажем, как использовать Screaming Frog в паре с Python‑скриптами, чтобы быстро обнаружить, проанализировать и исправить проблемы, а также как настроить постоянный мониторинг.
В итоге вы получите готовый пайплайн: сканирование сайта, парсинг CSV, генерация правил редиректа, кастомная страница 404 и автоматический мониторинг, который позволит держать индексацию в чистоте.
Почему 404‑ошибки критичны для SEO
404‑ошибки – не просто «пустые» страницы. Для пользователя они означают потерю контента, разочарование и вынуждают искать нужную информацию в другом месте. Для поисковых машин они сигнализируют о «плохой» структуре сайта: бот тратит время, пытаясь проиндексировать несуществующие URL, и в итоге теряет бюджет на реальные страницы. К тому же каждый раз, когда внешняя ссылка указывает на 404, потеряно потенциальное перенаправление ссылочного веса, что снижает общую авторитетность домена. В итоге позиции по ключевым запросам падают, а пользовательский опыт ухудшается.
- Пользователь теряет нужный контент и доверие к сайту.
- Краул‑бюджет «потерян» на несуществующие URL, вытесняя важные страницы.
- Ссылочный вес не передаётся, снижая общую ценность домена.
- Появление 404 повышает показатель отказов, влияя на ранжирование.
- Повторяющиеся ошибки создают негативный сигнал для поисковых ботов.
Настройка Screaming Frog для точного аудита
Что собрать перед запуском Screaming Frog
Перед тем как запустить аудит, убедитесь, что у вас есть доступ к:
- Полной версии сайта (не «lite» или «preview»), включая защищённые разделы.
- Файлу robots.txt и sitemap.xml, чтобы настроить обход и глубину сканирования.
- Результатам Google Search Console за последние 3–6 месяцев – они помогут сопоставить найденные 404 с реальными запросами.
- Серверными логами (access.log), где видны все запросы к страницам, включая 404.
- Список User‑Agent’ов, которые использует ваш сайт в аналитике (например, Googlebot, Bingbot, YandexBot). Выберите тот, который соответствует вашему целевому поисковому движку.
- Параметры глубины сканирования, которые вы хотите применить: 3–5 уровней обычно покрывают большинство внутренних ссылок, но при необходимости можно увеличить до 10.
- Настройки экспорта CSV: включите поля «URL», «HTTP‑статус», «Redirect», «Canonical», «Title» – это позволит быстро фильтровать и анализировать ошибки.
- Фильтр по статусу: убедитесь, что в Screaming Frog включён фильтр «HTTP‑статус 404» и «Redirect» для дальнейшего сравнения с логами.
- Доступ к сайту (FTP/SSH) и правам на чтение файлов.
- Скопированный robots.txt и sitemap.xml.
- Ссылка на Google Search Console и доступ к отчёту по ошибкам.
- Серверные логи за последний месяц.
- Список User‑Agent’ов, которые нужно задать в Screaming Frog.
- Параметр глубины сканирования (уровней).
- Настройки экспорта CSV (выбор полей).
- Фильтр статуса 404 и Redirect в настройках Screaming Frog.
Парсинг CSV в Python: фильтрация и группировка
Парсим CSV из Screaming Frog, отбираем только 404‑ы, группируем по домену и считаем их количество.
import csv
from collections import Counter
from urllib.parse import urlparse
def parse_404(csv_path):
counts = Counter()
with open(csv_path, newline='', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
if row.get('Status Code') == '404':
url = row.get('URL') or ''
domain = urlparse(url).netloc
counts[domain] += 1
return counts
if __name__ == '__main__':
result = parse_404('screaming_frog_404.csv')
for domain, num in result.most_common():
print(f'{domain}: {num}')
Проверка источников 404: внутренние и внешние ссылки
- Запрос URL в браузере: убедитесь, что страница открывается без 404 и загружается полностью.
- Проверка редиректов в Screaming Frog: статус 301/302 → корректный целевой URL, без цепочек >3.
- Анализ canonical в исходном коде: тег
<link rel="canonical">совпадает с canonical‑URL, не содержит параметров, которые ломают индексацию. - Выявление dead links: скрипт Python (requests + BeautifulSoup) → список URL с кодом 404/410, проверка в браузере и в Screaming Frog.
- Проверка индексации в Google Search Console: запрос «site:example.com» → отсутствие ошибок 404, подтверждение исправлений.
- Мониторинг Core Web Vitals: Lighthouse → убедитесь, что страницы с исправленными 404 не ухудшают показатели.
- Проверка кеша и Service Worker: откройте devtools → вкладка Network, включите «Disable cache», убедитесь, что исправленные страницы возвращают 200.
- Проверка PWA‑файлов: manifest.json, service‑worker.js → отсутствуют ошибки, fallback‑страница не генерирует 404.
- Проверка на наличие «soft 404»: откройте страницу, посмотрите размер ответа, наличие ключевых слов «404» в заголовке.
- Тестирование пользовательского опыта: откройте страницу в мобильном режиме, убедитесь, что навигация работает, нет «потерянных» ссылок.
План исправления: редиректы, кастомные страницы 404, удаление ссылок
- Соберите список 404‑ов. Запустите Screaming Frog, экспортируйте отчёт “Status Code = 404”. Анализируйте, где ссылки ведут на страницы, которые уже существуют в другом месте.
-
Выберите тип редиректа. Если контент перемещён навсегда, применяйте
301. Для временных перенаправлений (например, тестовые страницы) –302. В .htaccess добавьте правила вида:Redirect 301 /old-page /new-page -
Создайте кастомную страницу 404. На сервере разместите
404.htmlс дружелюбным UI: логотип, поиск, ссылки на главную и актуальные разделы. Убедитесь, что она возвращает статус404, но загружает только нужный контент, без лишних скриптов, чтобы не замедлять поисковый бот. - Удалите ошибочные URL из sitemap. В файле sitemap.xml отфильтруйте строки с 404‑ами, либо генерируйте новый sitemap без них. После обновления отправьте новый файл в Google Search Console (Coverage → Sitemaps).
- Обновите внутреннюю навигацию. В Screaming Frog откройте вкладку “Internal Links”. Найдите ссылки, указывающие на удалённые страницы, и замените их на актуальные URL или удалите. Проверьте, что в отчёте больше нет 404‑ов.
- Проверка правил редиректа:
curl -I https://example.com/old-page→301 Moved Permanently - Проверка кастомной 404: открыть в браузере
https://example.com/nonexistent, статус404, видимый UI. - Проверка sitemap: открыть
https://example.com/sitemap.xml, убедиться, что 404‑ы отсутствуют. - Проверка внутренней навигации: Screaming Frog – Internal Links, отсутствие 404‑ов.
- Проверка в Google Search Console: Coverage → Errors → 404, убедиться, что ошибки исчезли.
Автоматизация правил: генерация .htaccess и JSON‑конфигов
Python‑скрипт позволяет автоматически собрать список 404 из отчёта Screaming Frog и сформировать правила перенаправления в .htaccess, а также подготовить JSON‑конфиг для CMS, где старые адреса связываются с новыми страницами. Сгенерированный .htaccess размещается в корне сайта, а JSON‑файл кладётся в каталог конфигураций CMS.
import csv, json, pathlib
# Paths
CSV_PATH = pathlib.Path('screamingfrog_404.csv')
HTACCESS_PATH = pathlib.Path('.htaccess')
JSON_PATH = pathlib.Path('cms_redirects.json')
# Read 404 URLs
with CSV_PATH.open(newline='') as f:
reader = csv.DictReader(f)
urls = [row['URL'] for row in reader]
# Generate .htaccess rules
rules = []
for url in urls:
# Example: redirect to homepage
rules.append(f"RedirectMatch 301 ^{url}$ /")
HTACCESS_CONTENT = "\n".join(rules)
HTACCESS_PATH.write_text(HTACCESS_CONTENT)
# Prepare JSON for CMS (old → new mapping)
redirects = {url: '/' for url in urls} # change '/' to real target
JSON_CONTENT = json.dumps(redirects, indent=2)
JSON_PATH.write_text(JSON_CONTENT)
Пример готовых правил:
- RedirectMatch 301 ^/old-blog$ /new-blog
- RedirectMatch 301 ^/products/old-product$ /products/new-product
JSON‑конфиг для CMS:
{
"/old-blog": "/new-blog",
"/products/old-product": "/products/new-product"
}
Мониторинг после внедрения: cron‑jobs и alert‑ы
Мониторинг после внедрения – это постоянная проверка, отчётность и сигнализация. Периодический скан, сбор списка 404, email‑уведомления и синхронизация с Yandex/Google Search Console/Analytics позволяют быстро реагировать и удерживать позиции.
- Запланировать cron‑job:
/usr/bin/python3 /opt/seo/404monitor.py > /var/log/404monitor.log 2>&1. Ставим 12‑часовой интервал, чтобы не перегружать сервер. - Внутри скрипта сохранять список 404 в
/var/db/404list.jsonи генерировать CSV‑отчёт. В отчёте включать URL, дату появления и количество запросов. - Отправлять email‑уведомление через
sendmailилиsSMTPпри превышении порога (например, более 10 новых 404 за сутки). Формат письма: заголовок «404‑Alert», тело – таблица с URL и статистикой. - Интегрировать с Yandex Webmaster API: отправлять список 404 через
yandexwebmaster/urls/removeи получать статус. Для Google – использовать Search Console Bulk Removal API, передавая JSON‑payload с URL. - Проверять статус в консоли: в Yandex Webmaster появится «Removed URLs», в Google Search Console – «URL Removal Requests». При отказе фиксировать причину (404, 403, блокировка robots.txt).
- Сохранять метрики в Prometheus: метрика
seo_404_total{site="example.com"}обновляется каждый запуск. Настроить Grafana‑дашборд с графиком за 30 дней.
Частые ошибки и как их избежать
- Циклические перенаправления (A → B → C → A). С поисковыми ботами они превращаются в бесконечный цикл, что приводит к 500‑у в логах и потере индексации. Для обнаружения используйте Screaming Frog, включив «Redirect Chains». Удалите лишние промежуточные страницы, оставив прямой путь к контенту.
- Неверные canonical‑теги. Если canonical указывает на страницу с 404 или на другую страницу, поисковик не сможет правильно связать URL‑ы. Это ломает структуру сайта и снижает ценность контента. Проверяйте атрибут rel="canonical" на каждом 404‑странице и заменяйте его на корректный URL или удаляйте тег.
- Проблемы в robots.txt, блокирующие 404‑страницы. Часто администраторы ставят правила типа Disallow: /errors/. Это мешает поисковикам увидеть фактический статус 404 и может привести к «потерянным» страницам. Убедитесь, что 404‑страницы доступны для обхода, а только нужные ресурсы блокируются.
- Переопределение 404 (custom 404 как 200). Если сервер возвращает статус 200, но отображает страницу ошибки, поисковики считают её существующей. Это приводит к «подмене» контента и ухудшает индексацию. Настройте сервер так, чтобы он отдавал реальный HTTP‑код 404, а не 200.
- Отсутствие 301‑переадресации для устаревших URL. Когда старый URL возвращает 404, но есть новая версия, поисковик теряет ссылочный вес. Создавайте 301‑переадресацию с помощью .htaccess или серверного модуля, чтобы перенаправлять трафик и сохранить ценность ссылок.
Таймлайн внедрения: от аудита до релиза
Таймлайн внедрения исправления 404 с Screaming Frog и Python‑скриптами: от аудита до мониторинга.
- Фаза 1 – аудит
- Запускаем Screaming Frog в режиме “crawl” и экспортируем список 404‑страниц в CSV.
- Проверяем логи сервера (access.log) на повторяющиеся ошибки и выявляем источники ссылок.
- Создаём базу данных ошибок в формате JSON для дальнейшей обработки.
- Фаза 2 – анализ
- Сортируем список по частоте и источнику: «корректные» внутренние ссылки, «потерянные» внешние, «плохие» URL‑структуры.
- Определяем тип ошибки: 404 в контенте, 404 в sitemap, 404 в canonical.
- Формируем карту ошибок, выделяя критические пути, которые влияют на UX и индексацию.
- Фаза 3 – исправление
- Разрабатываем Python‑скрипт, генерирующий правила 301 для Nginx/Apache или обновляющий sitemap.
- Для динамических страниц создаём шаблон редиректа (например, /old-product/123 → /new-product/awesome).
- Обновляем внутренние ссылки в CMS, используя API или миграцию контента.
- Проверяем, что новые правила применяются без конфликтов в конфигурации сервера.
- Фаза 4 – проверка
- Запускаем Screaming Frog снова, сравниваем отчёты с базой данных ошибок.
- Проверяем, что код ответа 404 исчез из списка, а статус 200 подтверждён.
- Отправляем обновлённый sitemap в Google Search Console и ждём индексацию.
- Проверяем, что 301‑редиректы корректно работают в браузере и в инструментах разработчика.
- Фаза 5 – мониторинг
- Настраиваем alerts в Grafana/Prometheus на появление 404‑кодов (threshold > 5 в час).
- Периодически пересматриваем отчёты Screaming Frog каждые 2 недели.
- Обновляем правила при изменении структуры сайта и сохраняем стабильность минимум 3 месяца.
- Отслеживаем метрики Core Web Vitals и Search Console, чтобы убедиться, что исправления не повлияли на скорость и индексацию.
Итоговый чек‑лист контроля
- Проверь, что все 404‑страницы перенаправлены на релевантный URL (код 301/302) и не остаются без редиректа.
- Убедись, что кастомная страница 404 содержит корректный
HTTP‑status 404, текст «Страница не найдена» и ссылку на главную. - Сравни sitemap.xml с реальным списком страниц: убедись, что в нём нет ссылок на страницы, выдающие 404.
- Проверь аналитические данные (GA, Yandex.Metrica): ищи всплески 404‑сообщений, сравни их с реальными URL‑ами, чтобы исключить ложные сигналы.
- В Google Search Console открой раздел «Ошибки» и убедись, что количество 404‑ошибок не растёт, а если есть, то они уже исправлены.
- Проверь alerts в системах мониторинга (например, Datadog, Sentry): убедись, что алармы о 404‑переходах отключены после исправления.
- Проверь, что в файле robots.txt нет директив, блокирующих индексацию страниц, которые теперь доступны.
- Убедись, что в файле .htaccess (или аналогичном) нет конфликтующих правил, создающих циклы редиректов.
- Проверь, что в sitemap.xml включены только URL‑ы, которые действительно доступны (HTTP 200) и не дают 404.
- Проверь, что в Google Search Console нет предупреждений о «Ссылки, ведущие на 404» и они закрыты.
Вопросы и ответы
Как быстро найти все 404 на сайте?
Сканируйте сайт в Screaming Frog, включив режим Crawl, затем отфильтруйте статус 404 в разделе Internal. Сохраните список в CSV – это даст полный перечень всех неработающих ссылок за считанные минуты.
Можно ли автоматизировать исправление 404 без ручного вмешательства?
Автоматизация возможна: скрипт на Python может читать CSV из Screaming Frog, формировать правила 301 и автоматически добавлять их в конфиг веб‑сервера. Однако ручная проверка критических редиректов остаётся обязательной.
Какие инструменты Screaming Frog позволяют быстро отфильтровать 404?
В Screaming Frog в разделе Filters можно выбрать статус 404, а также настроить Custom Filter, чтобы показать только внутренние ссылки. Это ускоряет поиск, так как исключает внешние и статические ресурсы.
Как настроить Screaming Frog для сканирования поддоменов?
В настройках Crawl включите опцию "Include Subdomains" и укажите корневой домен. Скрипт будет обходить все поддомены, а в отчёте можно увидеть 404 по каждому из них.
Что делать с 404, которые появляются только после обновления контента?
Если 404 появляются после обновления, проверьте, не изменились ли пути в базе данных. Используйте Screaming Frog с параметром "Crawl All Subdomains" и включите "Crawl External" для проверки ссылок, которые ранее работали.
Как использовать Python‑скрипты для массового перенаправления 404?
Python‑скрипт может читать CSV, генерировать правила 301 в формате .htaccess или Nginx, а затем автоматически перезапустить сервер. Это позволяет массово исправлять ошибки без ручного ввода.
Какие типы редиректов лучше использовать для исправления 404?
Для 404 лучше использовать 301 редирект на релевантную страницу, либо 302 при тестировании, либо 410 если контент удалён. 301 сохраняет ссылочный вес, 410 сообщает поисковикам о полном удалении.
Как проверить, что редиректы работают корректно после автоматизации?
После автоматизации запустите Screaming Frog с параметром "Check Redirects" и сравните статус кода. Также можно использовать curl‑команды в скрипте, чтобы убедиться, что редирект ведёт к нужной странице.
Что учитывать при автоматизации, чтобы не нарушить индексацию?
При автоматизации не забывайте про правила robots.txt, canonical и hreflang. Неправильные редиректы могут привести к дублированию контента и потере индексации, поэтому тестируйте в staging.
Как интегрировать отчёт о 404 в систему мониторинга сайта?
Экспортируйте CSV с 404 из Screaming Frog, импортируйте его в систему мониторинга (например, Grafana). Настройте алерт при появлении новых 404, чтобы быстро реагировать на изменения.
Важно
Материал носит информационный характер. Перед внедрением рекомендаций учитывайте нишу, регион, конкурентов, текущее состояние сайта и бизнес-цели проекта.
Материал подготовлен и проверен редакцией AX.SEO
Редакция AX.SEO готовит материалы о SEO, разработке, AI, аналитике, маркетинге и росте digital-проектов.
Проверяет практическую применимость рекомендаций, корректность терминов и соответствие материала digital-тематике.