Apache Error AH00670: Options FollowSymLinks is off — Решение
При попытке открыть сайт сервер возвращает ошибку 500 Internal Server Error. В системном журнале error.log регистрируется блокировка модуля переписывания URL: [rewrite:error] [pid 1234:tid 5678] [client ...] AH00670: Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/html/.htaccess.
Требование модуля mod_rewrite | Текущее состояние опций | Результат безопасности |
|---|---|---|
| Разрешен переход по симлинкам | Options -FollowSymLinks (отключено) | Критический отказ выполнения директив RewriteRule |
| Симлинки с проверкой владельца | Options +SymLinksIfOwnerMatch | Допустимый безопасный режим работы mod_rewrite |
- Модуль
mod_rewriteотказывается обрабатывать любые правила в.htaccessиз соображений безопасности. - Сайт полностью блокируется с кодом 500.
- Откройте конфигурационный файл виртуального хоста (
/etc/apache2/sites-available/site.confили/etc/httpd/conf.d/vhost.conf). - В блоке
<Directory>добавьте опциюFollowSymLinksилиSymLinksIfOwnerMatch:<Directory /var/www/html> Options +FollowSymLinks AllowOverride All Require all granted </Directory> - Если вы используете общий хостинг и хотите обеспечить максимальную безопасность, используйте альтернативную директиву
SymLinksIfOwnerMatch(разрешает переход только по тем симлинкам, владелец которых совпадает с владельцем целевого файла):<Directory /var/www/html> Options +SymLinksIfOwnerMatch AllowOverride All Require all granted </Directory> - Проверьте файл
.htaccessв корне сайта: если в нем присутствует строкаOptions -FollowSymLinks, удалите ее или замените наOptions +FollowSymLinks. - Проверьте синтаксис:
sudo apache2ctl configtest. - Примените конфигурацию:
sudo systemctl reload apache2 # или httpd.
mod_rewrite необходимо проверять канонические пути к файлам через системный вызов lstat(). Если переход по символическим ссылкам запрещен, алгоритм переписывания путей блокируется ядром безопасности Apache.Частые вопросы (FAQ)
В чем разница между FollowSymLinks и SymLinksIfOwnerMatch?
FollowSymLinks разрешает переходить по абсолютно любым символическим ссылкам. SymLinksIfOwnerMatch разрешает переход только в том случае, если UID владельца ссылки совпадает с UID владельца целевого файла.
Почему SymLinksIfOwnerMatch работает медленнее?
Потому что Apache приходится выполнять дополнительный системный вызов stat() для каждого сегмента пути, чтобы сравнить идентификаторы владельцев файлов.
Может ли директива AllowOverride запрещать изменение опций?
Да, если в конфигурации VirtualHost указано AllowOverride AuthConfig (без Options), попытка прописать Options +FollowSymLinks в .htaccess вызовет ошибку 500.
Безопасно ли включать FollowSymLinks на сервере с одним сайтом?
Да, на выделенном сервере с одним веб-приложением включение FollowSymLinks полностью безопасно и обеспечивает максимальную производительность файлового ввода-вывода.