Страница 404 для несуществующих адресов

пошаговая инструкция · Около часа

← Все инструкции

1. Что произошло

Если открыть адрес, которого нет, сайт должен честно ответить «404 — не найдено».

2. Почему это важно

Поисковик может считать пустые адреса настоящими страницами и засорять индекс. После исправления: Чище индекс, меньше дублей в поиске.

3. На каких страницах обнаружено

Проверка адреса, которого заведомо нет на сайте: он должен отвечать кодом 404, а не 200 или редиректом на главную.

Чтобы увидеть адреса на вашем сайте, откройте инструкцию из отчёта или добавьте домен в адрес: /fix/not_found/ваш-сайт.ru.

4. Как исправить

Для Joomla

  1. Система → Общие настройки → «Режим SEF» включён; создайте материал и пункт меню «Страница 404», затем в шаблоне добавьте обработку ошибки. Проще — расширение для обработки 404.

Общее для любого сайта

  1. Создайте страницу «Страница не найдена» с меню, поиском и ссылками на разделы.
  2. Настройте сервер так, чтобы она отдавалась с кодом 404 (не 200 — это «мягкая 404» — и не 301/302 на главную).
  3. В ErrorDocument и error_page указывайте локальный путь (/404.html), а не полный адрес с https://: полный адрес превращается в редирект.

5. Готовый код

Замените example.com на свой домен. Перед правкой конфигурации сделайте резервную копию файла.

Любой сайт

PHP: отдать 404 в самописном коде
http_response_code(404);
include __DIR__ . '/404.html';
exit;

1С-Битрикс

/404.php
<?php
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php');
CHTTP::SetStatus('404 Not Found');
@define('ERROR_404', 'Y');
$APPLICATION->SetTitle('Страница не найдена');
?>
<p>Такой страницы нет. Перейдите на <a href="/">главную</a> или воспользуйтесь поиском.</p>
<?php require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/footer.php'); ?>

nginx

nginx
error_page 404 /404.html;
location = /404.html { internal; }

Apache

.htaccess
ErrorDocument 404 /404.html

6. Как проверить результат

  1. Команда выводит 404.
  2. В браузере открывается ваша страница с меню, а не пустой экран.
  3. Нажмите «Перепроверить сайт».
Код ответа на несуществующий адрес
curl -s -o /dev/null -w '%{http_code}\n' https://example.com/definitely-not-exists-123

Чтобы перепроверить сайт, откройте отчёт и нажмите «Проверить заново».