Обратите внимание, что другая проблема, которая может быть причиной этого, заключается в том, что параметр FollowSymLinks родительского каталога мог быть ошибочно перезаписан параметрами каталога вашего проекта. Так было со мной, и я тянул за волосы, пока не выяснил причину!
Вот пример такой ошибки:
<Directory />
Options FollowSymLinks
AllowOverride all
Require all denied
</Directory>
<Directory /var/www/>
Options Indexes # <--- NOT OK! It's overwriting the above option of the "/" directory.
AllowOverride all
Require all granted
</Directory>
Итак, теперь, если вы проверите сообщение журнала Apache (tail -n 50 -f /var/www/html/{the_error_log_file_of_your_site}
), вы увидите такую ошибку:
Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the RewriteRule directive
is also forbidden due to its similar ability to circumvent directory restrictions
Это потому, что Indexes
в приведенных выше правилах для каталога /var/www
перезаписывает FolowSymLinks
каталога /
. Итак, теперь, когда вы знаете причину, чтобы исправить ее, вы можете сделать много вещей в зависимости от ваших потребностей. Например:
<Directory />
Options FollowSymLinks
AllowOverride all
Require all denied
</Directory>
<Directory /var/www/>
Options FollowSymLinks Indexes # <--- OK.
AllowOverride all
Require all granted
</Directory>
Или даже это:
<Directory />
Options FollowSymLinks
AllowOverride all
Require all denied
</Directory>
<Directory /var/www/>
Options -Indexes # <--- OK as well! It will NOT cause an overwrite.
AllowOverride all
Require all granted
</Directory>
Приведенный выше пример не вызовет проблемы перезаписи, потому что в Apache, если параметр равен +, он перезапишет только + s, а если это -, он перезапишет -s ... ( Не просите у меня справки по этому поводу, это просто моя интерпретация сообщения об ошибке Apache (проверено через journalctl -xe
), в котором говорится: Either all Options must start with + or -, or no Option may.
, когда у опции есть знак, а у другого нет (например, FollowSymLinks -Indexes) . Итак, это мой личный вывод - поэтому следует воспринимать его с некоторой долей скептицизма - что, если я использовал -Indexes
в качестве параметра, он будет рассматриваться Apache как целый отдельный набор параметров по сравнению с другим параметром в /, который не имеет никаких признаков, и поэтому в конце не произойдет никаких раздражающих перезаписей, что я мог бы успешно подтвердить с помощью приведенных выше правил в моем собственном каталоге проекта).
Надеюсь, это поможет вам меньше выдергивать волосы! :)
person
aderchox
schedule
21.10.2020