如何在 .htaccess 中仅允许“要求全部拒绝”?

如何在 .htaccess 中仅允许“要求全部拒绝”?

我们有一个 Apache 2.4 服务器。在我们的 WordPress 安装 VHost 中,我们仅允许覆盖Limit,OptionsFileInfo. ( 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 插件使用.htaccesswithFilesMatch来确保底层目录不会被恶意 PHP 脚本滥用。Require all denied.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)都会以 500 HTTP 状态代码(内部服务器错误)进行响应。

/www/www.wordpressblog.com/wp-content/plugins/awesomeplugin/.htaccess: 此处不允许要求

如果我在 VHost 中扩展,也会AllowOverride发生AuthConfig同样的情况,“require 不允许”。但我找不到失败的原因。这也AllowOverride AuthConfig不能解决问题,因为其他插件可以放置一个.htaccess“Require all granted”的插件,而我会尽量避免这种情况。

相关内容