У нас есть сервер Apache 2.4. А в нашем VHost для установки WordPress мы разрешаем только переопределение Limit
, Options
и FileInfo
. (AllowOverride Limit Options FileInfo
).
<VirtualHost *:443>
DocumentRoot /www/www.wordpressblog.com
ServerName www.wordpressblog.com
ServerAlias wordpressblog.com
ErrorLog /var/log/apache2/www.wordpressblog.com_error.log
CustomLog /var/log/apache2/www.wordpressblog.com_access.log combined
SetEnv APPLICATION_ENV production
Include conf-available/server-ssl.conf
<Directory /www/www.wordpressblog.com>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Order allow,deny
Allow from all
</Directory>
Итак, плагин WordPress использует .htaccess
с участием FilesMatch
к Require all denied
для .php
-Файлы, чтобы гарантировать, что базовые каталоги не могут быть использованы вредоносными PHP-скриптами.
<FilesMatch "\.php$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
Но с этими параметрами все основные доступные файлы (например, CSS) отвечают кодом состояния HTTP 500 (внутренняя ошибка сервера).
/www/www.wordpressblog.com/wp-content/plugins/awesomeplugin/.htaccess: Требовать здесь запрещено
Если я продлю AllowOverride
с участием AuthConfig
в VHost происходит то же самое, «там требовать нельзя». Но я не могу найти провал. Также AllowOverride AuthConfig
не может быть решением, поскольку другие плагины могут помещать .htaccess
с «Требовать все предоставлено», чего я бы старался избежать.