SystemdDoctor
мешает работе apache конфигурация

Apache: правила .htaccess не действуют

Правила в .htaccess применяются только если это разрешено в основной конфигурации. По умолчанию во многих сборках переопределение запрещено целиком, и файл просто не читается — без ошибок и предупреждений.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Переопределение запрещено

    Параметр AllowOverride None в блоке каталога отключает чтение .htaccess. Это сделано ради скорости и безопасности.

  2. Не включён модуль, нужный для директив

    Правила переадресации требуют модуля переписывания адресов. Без него директивы вызывают ошибку или игнорируются.

  3. Файл недоступен для чтения

    Права на .htaccess или на каталог не позволяют серверу прочитать файл. Сообщение об этом попадает в журнал ошибок.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Разрешено ли переопределение и где.

sudo grep -rn "AllowOverride" /etc/apache2/ | grep -v "#"

Сообщения о чтении файла и ошибках в нём.

sudo tail -30 /var/log/apache2/error.log | grep -i htaccess

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Переопределение запрещено
Почему происходит
Параметр AllowOverride None в блоке каталога отключает чтение .htaccess. Это сделано ради скорости и безопасности.
Как проверить
Посмотрите действующее значение для нужного каталога.
sudo apache2ctl -S 2>/dev/null | head
sudo grep -rn "AllowOverride" /etc/apache2/ | grep -v "^.*#"
Как исправить
Разрешите нужные виды переопределения для конкретного каталога, а не для всего сервера.
# <Directory /var/www/site>
#     AllowOverride FileInfo Options
# </Directory>
2. Не включён модуль, нужный для директив
Почему происходит
Правила переадресации требуют модуля переписывания адресов. Без него директивы вызывают ошибку или игнорируются.
Как проверить
Посмотрите включённые модули.
sudo apache2ctl -M 2>/dev/null | grep -iE "rewrite|headers"
Как исправить
Включите нужный модуль и перезапустите службу.
sudo a2enmod rewrite && sudo systemctl restart apache2
3. Файл недоступен для чтения
Почему происходит
Права на .htaccess или на каталог не позволяют серверу прочитать файл. Сообщение об этом попадает в журнал ошибок.
Как проверить
Посмотрите права и журнал.
ls -l /var/www/site/.htaccess
sudo tail -20 /var/log/apache2/error.log | grep -i htaccess
Как исправить
Дайте права на чтение пользователю веб-сервера: обычно достаточно 0644.

Пример вывода

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

$ sudo grep -rn "AllowOverride" /etc/apache2/apache2.conf | head -2
172:    AllowOverride None

$ sudo tail -2 /var/log/apache2/error.log
# пусто: файл .htaccess даже не открывается

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация Apache: AllowOverride документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на apache2 из пакетов Ubuntu: по умолчанию переопределение запрещено.
    собственная проверка, systemd 255
    сверено 15 сентября 2026