Ошибки 404 в SEO
Когда пользователь заходит на несуществующую
страницу, сервер должен сказать браузеру
и поисковому роботу: «Такой страницы нет».
Для этого есть код ответа 404.
Но иногда сайт отдает код 200
на страницу, которой на самом деле нет.
Это называется soft-404.
И это серьезная ошибка с точки зрения SEO.
Разберемся, как правильно отдавать коды ответа и не создавать soft-404 случайно.
Что такое 404
Код ответа 404 означает, что страница
не найдена. Робот получает этот код и
понимает: индексировать нечего, страницу
нужно убрать из поиска.
Правильный ответ сервера выглядит так:
HTTP/1.1 404 Not Found
Если сервер вернул 404, робот
не будет считать эту страницу частью сайта.
Это честно и понятно.
Чем опасен soft-404
Soft-404 - это когда страница
не существует, но сервер отдает код
200. Робот думает, что все хорошо,
и пытается проиндексировать пустую
или бессмысленную страницу.
Представь, что сайт отдает такую страницу:
<h1>Страница не найдена</h1>
<p>
Извините, такой страницы нет.
</p>
Но при этом сервер вернул код 200.
Робот видит заголовок «Страница не найдена»,
а код говорит, что все в порядке.
Получается противоречие.
Чем это плохо:
Робот тратит время на индексацию мусора. В поиске появляются пустые страницы. Пользователи попадают на них и уходят. Поведенческие факторы падают.
Как отдавать правильные коды
Если страница не найдена, сервер должен
вернуть 404. Это делается на стороне
сервера или бэкенда.
Вот пример на PHP:
<?php
http_response_code(404);
include '404.php';
?>
Вот пример для Nginx:
error_page 404 /404.html;
Вот пример для Apache через .htaccess:
ErrorDocument 404 /404.html
Главное правило: если страницы нет,
код ответа должен быть 404,
а не 200.
Как не создать soft-404 случайно
Самая частая причина soft-404 - неправильная обработка несуществующих адресов.
Например, сайт на PHP делает так:
<?php
if ($page) {
include $page;
} else {
include '404.php';
}
?>
Но код ответа не меняется. Сервер отдает
200, хотя показывает страницу 404.
Это и есть soft-404.
Чтобы этого избежать, всегда явно устанавливай код ответа:
<?php
if ($page) {
include $page;
} else {
http_response_code(404);
include '404.php';
}
?>
Еще одна причина soft-404 - редиректы
на главную. Если страница не найдена,
не надо перенаправлять пользователя
на главную с кодом 200.
Лучше отдать честный 404.
Практические задачи
Расскажите, чем отличается код ответа
404 от soft-404.
Почему soft-404 опасны для SEO? Назовите минимум две причины.
Дан код на PHP:
<?php
if ($page) {
include $page;
} else {
include '404.php';
}
?>
Найдите ошибку и исправьте ее так, чтобы сервер отдавал правильный код.
Дан файл .htaccess:
ErrorDocument 404 /index.html
Что произойдет, если пользователь зайдет на несуществующую страницу? Будет ли это soft-404?
Дана верстка страницы 404:
<h1>Страница не найдена</h1>
<p>
Попробуйте вернуться на главную.
</p>
<a href="/">На главную</a>
Сервер отдает эту страницу с кодом
200. Переделайте так, чтобы
код ответа был правильным.
Опишите, что нужно изменить на сервере.