我如何允许访问 apache 中实际上与 RewriteRule 匹配的目录?

我如何允许访问 apache 中实际上与 RewriteRule 匹配的目录?

我们的服务器有很多域名。每个域名都有一个或多个我们希望通过 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>

相关内容