Своя страница ошибки в .htaccess: ErrorDocument 404, 403 и 500
Строка ErrorDocument в .htaccess показывает вместо стандартной страницы ошибки Apache вашу. Если указать путь от корня сайта, адрес в браузере не меняется, а код ответа остаётся прежним — 404, 403 или 500, — и поисковики видят ошибку правильно.
Содержание 12
Что сделать прямо сейчас
- Если сайт работает на движке — WordPress или другом, — сначала проверьте, не показывает ли он свою страницу 404: так советует справка Timeweb. Тогда строка в .htaccess не нужна — почему.
- Перед правкой сохраните копию файла .htaccess к себе на компьютер: если что-то пойдёт не так, её можно будет вернуть.
- Сделайте страницу 404.html и положите её в корневую папку сайта, рядом с .htaccess, — что в ней написать.
- Добавьте в .htaccess корневой папки строку
ErrorDocument 404 /404.html. Сохраните файл и сразу откройте сайт. Если появилась ошибка 500, уберите добавленные строки — сайт заработает как раньше. - Откройте несуществующий адрес и проверьте код ответа — как проверить.
Как устроена строка 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 года.
Что почитать дальше
- Ошибка 404 Not Foundоткуда берётся и как найти пропавшую страницу.
- Ошибка 403 Forbiddenкак найти причину запрета.
- Пароль на папку через .htaccessвход по логину и паролю.
- Файл .htaccessчто это, как создать и не сломать сайт.