Требуется ли для виртуальных хостов в Apache опция "FollowSymLinks"?

В /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

веб-сайт перестает работать и отвечает 403 ошибка вместо

Почему это происходит? Нигде я не использовал символические ссылки, по крайней мере, сознательно. Так использует ли Apache их внутренне при работе с виртуальными хостами?

Я не вижу причин, почему этот параметр должен нарушить настройку. Сайт фактически хранится в /var/www/example.com/publicЭто тоже не символическая ссылка.

1 ответ

Журналы ошибок Apache объясняют причину этой проблемы:

[rewrite: error] [pid...] [client...] AH00670: параметры FollowSymLinks и SymLinksIfOwnerMatch отключены, поэтому директива RewriteRule также запрещена из-за ее аналогичной способности обходить ограничения каталога

С помощью mod_rewrite с RewriteRule (как обычно) при отключении FollowSymLinks (как показано в вопросе) возможно только если SymLinksIfOwnerMatch включен взамен.

таким образом

-FollowSymLinks

должен стать

-FollowSymLinks +SymLinksIfOwnerMatch

или же mod_rewrite с RewriteRule не может быть использован больше.

Спасибо за подсказку, @fkraiem!

Другие вопросы по тегам