Назад | Перейти на главную страницу

Как разрешить только «Требовать все отклонено» в .htaccess?

У нас есть сервер 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 с «Требовать все предоставлено», чего я бы старался избежать.