Apache Linux

Apache: 500 Internal Server Error из-за .htaccess

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

500 из-за .htaccess — неверная директива или не включён модуль. Откройте error.log: он указывает строку и причину.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Как найти причину
  5. Типичные причины
  6. Безопасное тестирование
  7. Как проверить результат

#Что означает ошибка

Сообщение
500 Internal Server Error из-за .htaccess

Ошибка 500 Internal Server Error в Apache после правки .htaccess означает, что в файле неверная директива, модуль не включён, либо недостаточно прав. Единственный надёжный способ найти причину — журнал ошибок Apache.

Если сайт сломался сразу после изменения .htaccess, самый быстрый способ — переименовать файл и проверить, вернётся ли сайт.

Далее нужно найти строку с ошибкой.

500 из-за .htaccess — неверная директива или не включён модуль. Откройте error.log: он указывает строку и причину.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Неверная директива.htaccess.500.Исправьте.
Нет модуляmod_rewrite.Ошибка.Включите.
Права на файлыДоступ.500.Проверьте.
Ошибка PHPPHP.500.Проверьте логи.

#Пошаговое решение

  1. Переименуйте .htaccessЕсли ошибка 500 началась после правки .htaccess, сначала через панель хостинга или SSH сохраните его копию в каталог вне документ-корня. Для короткого теста переименуйте файл в .htaccess.disabled и проверьте страницу; это может снять правила авторизации и запреты, поэтому на публичном сайте лучше проверять через тестовый стенд или в окно обслуживания. Сразу верните файл после диагностики.
  2. Прочитайте журналОткройте журнал ошибок Apache в панели или по SSH (sudo tail -n 50 /var/log/apache2/error.log на Debian) и найдите строку по времени запроса. Сообщения Invalid command, Options not allowed here, RewriteRule или AH... укажут точную директиву. Исправьте конкретную строку, а не удаляйте весь файл окончательно.
  3. Включите нужные модулиЕсли журнал сообщает Invalid command RewriteEngine, администратор проверяет apachectl -M | grep rewrite и наличие модуля. Для Debian/Ubuntu возможно включение через a2enmod rewrite, но на других системах порядок иной. После проверки модуля убедитесь, что сам .htaccess допускается в нужном каталоге.
  4. Проверьте AllowOverrideВ конфигурации виртуального хоста откройте <Directory путь_к_сайту> и проверьте AllowOverride: при None директивы .htaccess игнорируются, а некоторые настройки недопустимы в .htaccess вообще. Не ставьте AllowOverride All на весь сервер, если достаточно ограниченного набора директив для конкретного сайта.
  5. Проверьте праваДля ошибок файлового доступа выполните namei -l /путь/к/.htaccess и проверьте владельца файла и родительских каталогов. Не задавайте chmod 777, а после исправления выполните sudo apachectl configtest, затем согласованный reload и повторите исходный запрос. Закрытые URL должны остаться закрытыми.

#Как найти причину

Откройте журнал: sudo tail -n 30 /var/log/apache2/error.log (RHEL: /var/log/httpd/error_log). Типичные сообщения: Invalid command 'RewriteEngine' — не включён mod_rewrite (sudo a2enmod rewrite && sudo systemctl restart apache2); Options not allowed here — в виртуальном хосте нужно AllowOverride All; syntax error — опечатка в директиве.

#Типичные причины

Директивы из nginx или другого сервера; php_value в .htaccess при работе PHP через FPM (используйте .user.ini); неверные права: файлам нужно 644, каталогам 755, и сайт не должен принадлежать root; бесконечный цикл правил RewriteRule; лишние символы (BOM) при сохранении файла в Блокноте — сохраняйте в UTF-8 без BOM.

#Безопасное тестирование

Проверьте конфигурацию: sudo apachectl configtest. Правьте .htaccess небольшими шагами и проверяйте после каждой правки. Храните копию рабочего файла.

Linux · Терминал (Bash)КомандаНужен sudo
Журнал ошибок Apache и проверка конфигурации.
sudo tail -n 30 /var/log/apache2/error.log
sudo apachectl configtest

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

После исправления откройте сайт с жёстким обновлением страницы (Ctrl+F5) и проверьте журнал: новые строки об ошибке не должны появляться. Проверьте, что редиректы работают: curl -I http://сайт/страница покажет код и заголовок Location. Если используется кэширование (CDN, плагины), очистите его, иначе вы увидите старую ошибку.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.