我正在运行 Apache 2.4,根据我在 Apache 网站上找到的文档(http://httpd.apache.org/docs/current/sections.html),在“如何合并部分”一节下,它说虚拟主机配置应该覆盖服务器配置。
我有一个 filesmatch 服务器配置正则表达式,使用“order denied, allow”逻辑来阻止公众访问重要的 wordpress 文件:
<FilesMatch "wp-login\.php|xmlrpc\.php|admin-ajax\.php">
Include conf/global_acl.conf
</FilesMatch>
然后在我的虚拟主机下我有另一个文件匹配来允许对某些文件进行特定访问以启用 wordpress 插件:
<FilesMatch "^(xmlrpc|wp-trackback)\.php$">
Order Deny,Allow
Allow from wordpress.com
Allow from 123.123.123.123
</FilesMatch>
我的目标是让服务器配置允许进程,由虚拟主机继承,然后让虚拟主机解析附加的允许指令。这似乎不起作用。如果我通过删除 xmlrpc 文件来修改服务器级别,虚拟主机就会正常工作。
编辑
为了消除混淆,我的问题是,在虚拟主机下,即使我使用的是 IP 123.123.123.123,我也被拒绝了。我希望虚拟主机继承服务器配置中的白名单条目。然后在虚拟主机配置中允许其他白名单。我的服务器配置顶部有一个 DENY FROM ALL。
知道发生了什么事吗?提前致谢!
答案1
2.4 版中所做的更改是替换语法允许来自通过新的要求所有已授予以及类似情况。请参阅apache 升级文档部分访问控制。
您可以使用 compat 模块来避免更改。如果您使用它,并选择,Order Deny,Allow
然后如果您没有Deny
语句,则将允许所有访问(请参阅apache compat:订购)。
因此,要么使用Order Allow,Deny
,要么添加Deny from all
。