Справочник

Своя страница ошибки в .htaccess: ErrorDocument 404, 403 и 500

Строка ErrorDocument в .htaccess показывает вместо стандартной страницы ошибки Apache вашу. Если указать путь от корня сайта, адрес в браузере не меняется, а код ответа остаётся прежним — 404, 403 или 500, — и поисковики видят ошибку правильно.

≈ 7 мин чтения
Содержание 12

Что сделать прямо сейчас

  1. Если сайт работает на движке — WordPress или другом, — сначала проверьте, не показывает ли он свою страницу 404: так советует справка Timeweb. Тогда строка в .htaccess не нужна — почему.
  2. Перед правкой сохраните копию файла .htaccess к себе на компьютер: если что-то пойдёт не так, её можно будет вернуть.
  3. Сделайте страницу 404.html и положите её в корневую папку сайта, рядом с .htaccess, — что в ней написать.
  4. Добавьте в .htaccess корневой папки строку ErrorDocument 404 /404.html. Сохраните файл и сразу откройте сайт. Если появилась ошибка 500, уберите добавленные строки — сайт заработает как раньше.
  5. Откройте несуществующий адрес и проверьте код ответа — как проверить.

Как устроена строка ErrorDocument

ErrorDocument 404 /404.html

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

Для других ошибок — свои строки. Страницы можно сложить в отдельную папку:

ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html

Подходит любой код ошибки, который начинается на 4 или 5. Строка действует на папку с этим .htaccess и на все вложенные папки.

Если сайт работает на движке и все адреса уходят в index.php — такое правило, — несуществующие адреса обрабатывает сам движок: Apache находит файл index.php, и строка ErrorDocument 404 для таких адресов не срабатывает. Страницу 404 тогда меняют в настройках или шаблоне движка.

Что положить в страницу ошибки

Страница ошибки — простой HTML-файл, например такой:

<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Страница не найдена</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<h1>Страница не найдена</h1>
<p><a href="/">На главную</a></p>
</body>
</html>
  • Пути к стилям, картинкам и ссылкам пишите от корня сайта: /css/style.css, а не css/style.css. Страница ошибки появляется по любому адресу, например /blog/old/page/, и путь без косой черты в начале браузер будет искать от этого адреса — стили не загрузятся.
  • Сохраните файл в кодировке UTF-8 и оставьте строку <meta charset="utf-8"> — иначе русский текст может превратиться в набор значков.
  • Дайте ссылки на главную и основные разделы — посетитель сможет уйти дальше по сайту.

Почему не нужен полный адрес

Строка с полным адресом — ErrorDocument 404 https://example.com/404.html — работает иначе: Apache отправит посетителя на этот адрес с кодом 302. Поисковик получит не 404, а переадресацию на страницу, которая открывается, — документация Apache предупреждает, что это сбивает роботов. Пишите путь от корня, без https:// и имени сайта.

Для ошибки 401 полный адрес ломает вход по паролю: получив переадресацию вместо 401, браузер не покажет окно входа. Для 401 — только путь на своём сайте.

Текст вместо страницы

Вместо страницы можно показать короткий текст. Текст из нескольких слов пишут в кавычках:

ErrorDocument 403 "Access denied"

Текст уходит как HTML, поэтому в нём можно писать теги. Но Apache помечает такой ответ кодировкой ISO-8859-1, и русские буквы превратятся в набор значков. Для русского текста сделайте отдельную страницу.

Вернуть стандартную страницу

Если в .htaccess корневой папки задана своя страница, а во вложенной папке нужна стандартная, добавьте в .htaccess этой папки:

ErrorDocument 404 default

Слово default возвращает встроенное сообщение Apache. Чтобы вернуть стандартную страницу всему сайту, удалите строку ErrorDocument из .htaccess корневой папки.

Как проверить

В терминале компьютера (как открыть терминал, про curl) запросите адрес, которого на сайте нет:

curl -I https://example.com/takoj-stranicy-net/

В первой строке ответа должно стоять число 404. Если пришло 302, в строке ErrorDocument указан полный адрес — замените его путём.

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

На хостинге

  • Справка Timeweb приводит строку ErrorDocument 404 /errors/404.html и советует сначала проверить, не умеет ли показывать свою страницу 404 движок сайта.
  • Справка Спринтхоста приводит строку ErrorDocument 404 /error404.html: страницу кладут рядом с .htaccess или указывают путь к ней.

Файл страницы загрузите так же, как .htaccess, — через файловый менеджер в панели хостинга: где лежит файл.

На своём VPS

Строке ErrorDocument в .htaccess нужна группа FileInfo — проще всего разрешить AllowOverride All: как разрешить .htaccess.

Если сайт работает на nginx, своя страница ошибки задаётся строкой error_page — как в nginx.

Ошибки и как их исправить

Что видитеЧто делать
стандартная страница вместо вашейстрока не в том .htaccess или с опечаткой; на своём VPS проверьте, что Apache читает .htaccess, — как разрешить .htaccess
ваша страница без стилей и картинокпишите пути от корня сайта, с косой чертой в начале, — пример
curl показывает 302 вместо 404в строке ErrorDocument полный адрес — замените его путём
несуществующий адрес отвечает кодом 200адрес обрабатывает движок сайта — страницу 404 и код ответа настраивают в нём
под стандартным сообщением строка Additionally, a 404 Not Found error was encountered…Apache не нашёл вашу страницу ошибки: проверьте путь в строке ErrorDocument и имя файла
русский текст из кавычек превратился в значкисделайте вместо текста отдельную страницу
ошибка 500 после сохранения .htaccessопечатка в строке — разбор

Источники

  • Документация Apache: ErrorDocument — путь от корня сайта, полный адрес или текст; полный адрес даёт клиенту код переадресации, а это сбивает роботов; для 401 — только путь на своём сайте; слово default возвращает встроенное сообщение.
  • Документация Apache: свои страницы ошибок — любой код 4xx и 5xx; в .htaccess — при AllowOverride FileInfo; текст из нескольких слов пишут в кавычках.
  • Исходный код Apache 2.4.58: http_request.c — полный адрес — ответ 302 с переадресацией; страница по пути от корня отдаётся с исходным кодом ошибки.
  • Исходный код Apache 2.4.58: http_protocol.c — текст из кавычек уходит как text/html с кодировкой iso-8859-1; если страница ошибки не нашлась, под стандартным сообщением появляется строка о второй ошибке.
  • Документация Apache: AllowOverride — по умолчанию None; группы AuthConfig, FileInfo, Indexes, Limit и Options; директива не из разрешённой группы даёт ошибку сервера.
  • Timeweb: создание и настройка .htaccess — строка ErrorDocument 404 /errors/404.html; сначала проверить, не умеет ли это движок сайта.
  • Спринтхост: файл .htaccess — строка ErrorDocument 404 /error404.html; страницу кладут рядом с .htaccess или указывают путь.

Сверено 15 октября 2026 года.

Что почитать дальше