通过 .htaccess 限制按 IP 进行位置匹配

通过 .htaccess 限制按 IP 进行位置匹配

我在重写规则 ('/admin') 中定义了一个 URL 路径,我想将其限制为仅 1 个 IP 地址的访问权限。我认为最好的方法是使用 .htaccess,而不是对其进行编码。我试过这个,但没有用。它阻止了所有 URL,而不仅仅是带有 /admin 的 URL。

<Location /admin>
    Deny from all
    Allow from x.x.x.x
</Location>

答案1

.htaccess 文件中不允许使用 Location 指令。否则,您可以在 Apache 配置文件/虚拟主机文件中添加以下行。

答案2

您可以使用 RewriteRule 的 [F] 标志拒绝除允许的 IP 之外的所有 IP 的访问。请参阅以下示例(我没有测试过,但我认为它是正确的)。如果您想使用 allow 指令,另一种方法是使用 Rewrite 指令使用 RewriteRule 的 [E=...] 标志设置环境变量,然后从 env=environment_var_goes_here 执行 Allow(请参阅http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/admin.*
RewriteCond %{REMOTE_ADDR} !^x\.x\.x\.x$
RewriteRule .* - [F]

注意:我编写该示例是为了匹配以 /admin 开头的任何 URL,但如果您只想匹配 /admin,请删除 .* 并将其替换为 $。

相关内容