В /etc/apache2/apache2.conf
, У меня есть следующая конфигурация для Apache относительно /var/www
каталог:
<Directory /var/www/>
Options -Indexes -Includes -ExecCGI
AllowOverride All
Require all granted
</Directory>
В /etc/apache2/sites-enabled/example.com.conf
затем, это - то, как я настроил свой виртуальный хост к example.com
:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin info@example.com
DocumentRoot /var/www/example.com/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Все хорошо работает до сих пор.
Но как только я редактирую <Directory /var/www/>
часть (см. выше) от
Options -Indexes -Includes -ExecCGI
кому:
Options -Indexes -FollowSymLinks -Includes -ExecCGI
веб-сайт прекращает работать и отвечает a 403
ошибка вместо этого.
Почему это происходит? Нигде я не использовал символьных ссылок, по крайней мере, не сознательно. Таким образом, Apache использует их внутренне при работе с виртуальными хостами?
Я не вижу оснований, почему та опция должна повредить установку. Веб-сайт на самом деле хранится в /var/www/example.com/public
, это не символьная ссылка, также.
Журналы ошибок Apache объясняют причину этой проблемы:
[rewrite:error] [pid...] [клиент...] AH00670: Опции FollowSymLinks и SymLinksIfOwnerMatch оба выключены, таким образом, директива RewriteRule также запрещается из-за ее подобной способности обойти ограничения каталога
Используя mod_rewrite
с RewriteRule
(как распространено), в то время как отключение FollowSymLinks
(как показано в вопросе) только возможно, если SymLinksIfOwnerMatch
, включил в ответ.
Таким образом
-FollowSymLinks
должен стать
-FollowSymLinks +SymLinksIfOwnerMatch
, или mod_rewrite
с RewriteRule
не может больше использоваться.
спасибо за подсказку, @fkraiem!