我们的服务器有很多域名。每个域名都有一个或多个我们希望通过 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
匹配了索引页中的页面。但奇怪的是它确实阻止/admin
并出现403
错误,但它不允许Allow from
规则中列出的 IP。
为什么目录匹配并拒绝,但不允许?这是预期行为吗?我该如何解决这个问题?
答案1
对于不是目录的位置,请使用<Location>
而不是<Directory>
。