Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

APACHE_HTACCESS_SYNTAX Linux / DevOps

Траблшутинг синтаксических ошибок в .htaccess: отладка LogLevel rewrite:trace5

Обновлено: 21.08.2026
  • Ошибка 500 Internal Server Error при загрузке страниц с файлами .htaccess.
  • В error_log фиксируется .htaccess: Option ... not allowed here или Invalid command 'RewriteEngine'.
  • Правила перенаправления mod_rewrite зацикливаются (Request exceeded the limit of 10 internal redirects).

1. Проверка синтаксиса и загрузки mod_rewrite

apachectl -M | grep rewrite
# Если модуль отсутствует, включите его (Debian/Ubuntu):
a2enmod rewrite && systemctl restart apache2

2. Включение директивы AllowOverride в VirtualHost

Убедитесь, что в файле конфигурации хоста разрешена обработка .htaccess:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

3. Включение глубокой трассировки mod_rewrite

Добавьте директиву LogLevel внутри блока VirtualHost:

LogLevel warn rewrite:trace5

(Уровни trace1–trace3 показывают базовые совпадения, trace5–trace8 выводят подробный пошаговый разбор каждого RewriteCond и RewriteRule).

4. Мониторинг отладочного журнала

tail -f /var/log/apache2/error.log | grep -E "$$rewrite:trace[1-8]$$"

5. Предотвращение циклических перенаправлений

Убедитесь, что в .htaccess присутствует проверка существования файлов:

RewriteEngine On
RewriteBase /

# Прекратить перезапись, если файл или папка физически существуют
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# Перенаправление на фронт-контроллер
RewriteRule ^ index.php [L,QSA]
💡 Практика специалистов: Если возможно, полностью откажитесь от .htaccess в продакшене, перенеся правила внутрь секции в основном конфиге и установив 'AllowOverride None' для прироста RPS до 25-30%.

Частые вопросы (FAQ)

Почему после исправления .htaccess ошибка 500 остается?

Проверьте права доступа к файлу .htaccess. Веб-сервер (пользователь www-data или apache) должен иметь права на чтение (права 644).

Каково влияние LogLevel rewrite:trace8 на продакшн?

Уровни выше trace3 генерируют огромный объем дискового I/O и могут моментально заполнить системный диск логами. Используйте их только во время отладки.

Полезные материалы
Рекомендуем