我们有一个包含很多域的服务器。每个域将具有以下一个或多个我们希望通过 IP 保护的管理区域:
- domain.tld/admin(管理区域)
- domain.tld/blog/wp-admin(博客子目录中的 wordpress 管理区域)
- domain.tld/wp-admin(wordpress 管理区域)
这是我们用来保护所有站点上所有这些的 Apache 配置的一个片段:
<Directory ~ "^/home/user/apache/[^/]+/public/((blog/)?wp\-)?admin">
AllowOverride All
Order Deny,Allow
Deny from all
Allow from 123.45.67.89 23.45.67.89 34.56.78.90
</Directory>
这会将上述任何文件夹限制为仅对这些 IP 地址可见。对于大多数网站和博客来说,这非常有效。但是,在一个小型站点上,这不起作用。
我认为可能的区别在于admin
该站点上的文件夹实际上并不存在,而是RewriteRule
匹配 a 以从索引页面提供该页面。奇怪的是它确实阻止/admin
并给出了403
错误,但它不允许Allow from
规则中列出的 IP。
为什么目录匹配和拒绝,但不允许?这是预期的行为吗?我怎样才能解决这个问题?
对于不是目录的位置,请使用
<Location>
而不是<Directory>
.