Загрузка...
Загрузка...
Подробное руководство по битым ссылкам: влияние на SEO, поиск 404 ошибок, инструменты проверки и методы исправления. Практические советы для вебмастеров.
Пошаговое руководство по поиску и исправлению ошибок 404. Инструменты диагностики, настройка редиректов, кастомные страницы 404. Влияние на SEO и пользователей.
SEOПрактическое руководство по Broken Link Building: поиск битых ссылок на чужих сайтах, создание заменяющего контента, outreach. Пошаговая стратегия для SEO-специалистов.
SEOПодробное руководство по оптимизации изображений для поисковых систем. WebP, сжатие, lazy loading, alt-теги и другие техники для улучшения SEO и производительности сайтов.
SEOПодробное руководство по работе с редиректами: типы, настройка, влияние на SEO. Практические примеры для веб-разработчиков и SEO-специалистов. Лучшие практики и типичные ошибки.
Поделитесь с коллегами или изучите другие материалы блога
Каждый сайт со временем обрастает битыми ссылками. Страницы удаляются, URL меняются, внешние ресурсы закрываются — и вот уже десятки ссылок ведут в никуда. Для пользователей это раздражение, для поисковых систем — сигнал о низком качестве ресурса.
Разберём, что происходит, когда Google или Яндекс натыкается на битую ссылку, как это отражается на позициях, и что конкретно делать, чтобы навести порядок.
Битая ссылка (broken link, dead link) — это гиперссылка, которая ведёт на несуществующую или недоступную страницу. Вместо контента пользователь получает ошибку. Но не все ошибки одинаковы.
Самый распространённый случай. Сервер явно сообщает: «Такой страницы нет». Поисковые системы корректно это обрабатывают — удаляют страницу из индекса через какое-то время.
GET /old-page HTTP/1.1
Host: example.com
HTTP/1.1 404 Not Found
Означает, что страница удалена навсегда. В отличие от 404, код 410 говорит поисковику: «Не пытайся перекраулить, контент не вернётся». Google рекомендует использовать 410 для страниц, которые точно не будут восстановлены — это ускоряет исключение из индекса.
Самый коварный вариант. Страница фактически не существует, но сервер отдаёт код 200 (OK). Пользователь видит сообщение «Ничего не найдено», но технически ответ выглядит как успешный.
Чем это плохо:
Правильное решение — отдавать реальный код 404 или 410, а не маскировать пустую страницу кодом 200.
Ссылка может быть нерабочей не только из-за 404:
У каждого сайта есть ограниченное количество страниц, которое поисковый робот готов обойти за один визит — crawl budget. Каждая битая ссылка, которую робот пытается открыть, — потерянный запрос. Для сайта на 50 страниц это несущественно. Для интернет-магазина с 500 000 товаров — критично.
Когда Googlebot раз за разом натыкается на 404, он тратит запросы на несуществующие страницы, снижает частоту обхода живых страниц и медленнее обнаруживает новый контент.
Если на удалённую страницу вели внешние ссылки с авторитетных ресурсов, весь их «вес» теряется. Представьте: вы получили ссылку с крупного отраслевого портала, а целевая страница вернула 404. Вся SEO-ценность этой ссылки пропадает.
То же касается внутренней перелинковки. Ссылки на 404 — это разрывы в структуре сайта, через которые утекает PageRank.
Пользователь кликает по ссылке и видит ошибку — в большинстве случаев уходит. Это повышает показатель отказов и снижает глубину просмотра. Поведенческие факторы ухудшаются, что косвенно влияет на ранжирование.
Большое количество 404-ошибок в Search Console или Яндекс.Вебмастере — красный флаг. Поисковая система может решить, что сайт заброшен или плохо поддерживается.
Самая частая причина. При редизайне сайта, смене CMS или реструктуризации каталога URL меняются, а старые ссылки остаются в навигации и статьях.
<!-- Неправильно -->
<a href="/services/borken-links">Проверка ссылок</a>
<!-- Правильно -->
<a href="/services/broken-links">Проверка ссылок</a>
Миграция на новый домен без полноценной настройки 301-редиректов — гарантированный источник сотен битых ссылок.
Вы сослались на статью в блоге другой компании, а через год они удалили этот блог. Вы не контролируете чужой контент, но отвечаете за ссылки на своём сайте.
Переход с example.com/catalog/product-123 на example.com/shop/product-123 без редиректов мгновенно создаёт массу битых ссылок — как внутренних, так и внешних.
В Search Console откройте отчёт Страницы, фильтр «Не найдена (404)». В Яндекс.Вебмастере — Индексирование → Исключённые страницы, фильтр «Ошибка HTTP: 404». Учтите: здесь только страницы, известные поисковикам. Внутренние битые ссылки, на которые ничего не ссылается извне, сюда не попадут.
Для быстрой проверки без установки софта используйте Проверка битых ссылок на reChecker. Сервис сканирует все страницы сайта, проверяет каждую ссылку и выдаёт список нерабочих URL с кодами ответа. Не требует регистрации.
Дополнительно полезно проверить:
# Проверить код ответа конкретного URL
curl -o /dev/null -s -w "%{http_code}" https://example.com/some-page
# Пакетная проверка списка URL из файла
while IFS= read -r url; do
code=$(curl -o /dev/null -s -w "%{http_code}" "$url")
[ "$code" != "200" ] && echo "$code $url"
done < urls.txt
import requests
from concurrent.futures import ThreadPoolExecutor
def check_url(url):
try:
r = requests.head(url, timeout=10, allow_redirects=True)
return url, r.status_code
except requests.RequestException as e:
return url, str(e)
urls = open("urls.txt").read().strip().split("\n")
with ThreadPoolExecutor(max_workers=10) as executor:
for url, status in executor.map(check_url, urls):
if status != 200:
print(f"[{status}] {url}")
Лучший вариант, если удалённая страница имеет логическую замену.
Apache (.htaccess):
# Редирект конкретной страницы
Redirect 301 /old-page /new-page
# Редирект с регулярным выражением
RewriteEngine On
RewriteRule ^blog/old-post/?$ /blog/new-post [R=301,L]
# Массовый редирект категории
RewriteRule ^catalog/old-category/(.*)$ /catalog/new-category/$1 [R=301,L]
Nginx:
server {
location = /old-page {
return 301 /new-page;
}
location ~* ^/blog/old-section/(.*)$ {
return 301 /blog/new-section/$1;
}
}
Next.js (next.config.js):
module.exports = {
async redirects() {
return [
{
source: '/old-page',
destination: '/new-page',
permanent: true,
},
];
},
};
После настройки проверьте цепочки через инструмент проверки редиректов, чтобы убедиться в отсутствии циклов и лишних промежуточных переходов.
Если битая ссылка — внутренняя, замените её на правильный URL. Для WordPress:
-- Найти записи с битой ссылкой
SELECT ID, post_title FROM wp_posts
WHERE post_content LIKE '%/old-url%' AND post_status = 'publish';
-- Массовая замена
UPDATE wp_posts
SET post_content = REPLACE(post_content, '/old-url', '/new-url')
WHERE post_content LIKE '%/old-url%';
Если контент удалён без замены, верните 410 вместо 404 — это ускорит исключение из индекса.
# Apache
RewriteEngine On
RewriteRule ^discontinued-product/?$ - [G,L]
# Nginx
location = /discontinued-product {
return 410;
}
Если ссылка вела на внешний ресурс, который исчез, и замены нет — просто уберите её. Мёртвый линк хуже, чем его отсутствие.
| Приоритет | Критерий | Действие |
|---|---|---|
| Высокий | Страница имеет внешние бэклинки | 301-редирект обязателен |
| Высокий | Ссылка в главной навигации | Исправить немедленно |
| Средний | Внутренняя ссылка в контенте | Обновить URL или удалить |
| Низкий | Ссылка на внешний ресурс | Удалить или заменить |
Для массовой проверки используйте Массовую проверку ссылок — загрузите список URL и получите коды ответа для каждого.
Даже после всех исправлений пользователи будут иногда попадать на несуществующие страницы. Грамотная 404-страница снижает количество отказов.
Что должно быть: понятное сообщение, поиск по сайту, ссылки на главные разделы, оформление в стиле сайта.
Чего быть не должно: автоматический редирект на главную (создаёт soft 404), код ответа 200 вместо 404, пустая страница без навигации.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Страница не найдена — Example.com</title>
<meta name="robots" content="noindex, follow">
<style>
body {
font-family: system-ui, -apple-system, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: #f8f9fa;
color: #333;
}
.container { text-align: center; max-width: 520px; padding: 2rem; }
.error-code { font-size: 8rem; font-weight: 800; color: #dee2e6; line-height: 1; }
h1 { font-size: 1.5rem; margin: 1rem 0 0.5rem; }
p { color: #666; margin-bottom: 1.5rem; line-height: 1.6; }
.search-form { display: flex; gap: 0.5rem; margin-bottom: 2rem; }
.search-form input {
flex: 1; padding: 0.75rem 1rem;
border: 1px solid #dee2e6; border-radius: 6px; font-size: 1rem;
}
.search-form button {
padding: 0.75rem 1.5rem; background: #228be6; color: #fff;
border: none; border-radius: 6px; cursor: pointer; font-size: 1rem;
}
.links { display: flex; gap: 1.5rem; justify-content: center; flex-wrap: wrap; }
.links a { color: #228be6; text-decoration: none; }
.links a:hover { text-decoration: underline; }
</style>
</head>
<body>
<div class="container">
<div class="error-code">404</div>
<h1>Страница не найдена</h1>
<p>Возможно, страница была удалена или адрес введён неправильно.
Попробуйте найти нужную информацию через поиск.</p>
<form class="search-form" action="/search" method="GET">
<input type="text" name="q" placeholder="Поиск по сайту..." required>
<button type="submit">Найти</button>
</form>
<div class="links">
<a href="/">Главная</a>
<a href="/catalog">Каталог</a>
<a href="/blog">Блог</a>
<a href="/contacts">Контакты</a>
</div>
</div>
</body>
</html>
# Apache (.htaccess)
ErrorDocument 404 /404.html
# Nginx
error_page 404 /404.html;
location = /404.html {
root /var/www/html;
internal;
}
Разовый аудит — хорошо, но битые ссылки появляются постоянно. Нужен системный подход.
Частота зависит от размера сайта:
Используйте Проверку битых ссылок на reChecker для регулярного аудита — это занимает минуты и не требует установки программ.
Для статических сайтов и SPA встройте проверку ссылок в пайплайн:
# GitHub Actions
name: Check Links
on:
push:
branches: [main]
jobs:
linkcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Link Checker
uses: lycheeverse/lychee-action@v1
with:
args: --verbose ./public
fail: true
# Топ-20 URL с ошибкой 404 (Nginx)
awk '($9 ~ /404/)' /var/log/nginx/access.log \
| awk '{print $7}' | sort | uniq -c | sort -rn | head -20
Битые ссылки — не только проблема, но и возможность. Стратегия Broken Link Building позволяет получить качественные бэклинки, помогая другим сайтам исправить их проблемы.
Поиск целевых страниц. Используйте операторы Google:
"полезные ссылки" site:example.com
"рекомендуемые ресурсы" inurl:links
"ваша тема" intitle:"ресурсы" OR intitle:"полезные ссылки"
Проверка ссылок на странице. Используйте расширения для браузера (Check My Links) или инструмент проверки битых ссылок для сканирования страницы.
Создание контента-замены. Контент должен быть релевантен теме удалённой страницы и не хуже по качеству. Посмотрите через web.archive.org, что было на удалённой странице, и создайте улучшенную версию.
Аутрич. Напишите владельцу сайта — главное быть полезным, а не навязчивым:
Тема: Нашёл нерабочую ссылку на вашей странице
Здравствуйте, [имя]!
Изучал вашу страницу [URL] и заметил, что ссылка на [описание]
больше не работает — возвращает 404.
У нас есть актуальная статья на эту тему: [ваш URL].
Возможно, подойдёт как замена.
С уважением,
[Ваше имя]
Конверсия такого аутрича заметно выше обычного линкбилдинга (10–20% vs 1–5%), потому что вы решаете реальную проблему, а не просто просите ссылку.
Массовый 301 на главную. Google расценивает это как soft 404 и игнорирует редирект. Каждый 301 должен вести на релевантную страницу.
Цепочки редиректов. A → B → C → D — каждый промежуточный шаг теряет часть ссылочного веса. Максимум — один редирект до конечной страницы.
JavaScript-редиректы. Не передают ссылочный вес и ненадёжно обрабатываются поисковыми роботами. Всегда используйте серверные редиректы.
Отсутствие мониторинга после миграции. Настроили редиректы и забыли? Через полгода часть может сломаться, а вы узнаете только по падению трафика.
Битые ссылки — одна из самых недооценённых SEO-проблем. Они не вызывают мгновенного падения позиций, но методично подтачивают сайт: расходуют краулинговый бюджет, теряют ссылочный вес, ухудшают пользовательский опыт. Чем дольше проблема остаётся без внимания, тем больше накопленный ущерб.
Хорошая новость — это полностью решаемая задача. Регулярные проверки, оперативная настройка редиректов и грамотная 404-страница закрывают 90% проблем. А стратегия Broken Link Building превращает чужие битые ссылки в ваше конкурентное преимущество.
Начните с аудита: проверьте свой сайт через инструмент проверки ссылок и устраните критические проблемы в первую очередь. Затем выстройте систему мониторинга — и битые ссылки перестанут быть проблемой.