我有index.php 文件,我想只允许使用htaccess 访问特定IP。
但是我想允许每个人访问子目录中名为index.php 的文件。
我应该如何编写只影响当前目录中的index.php的规则?这是我尝试过的,但没有成功,它也阻止了子目录中的index.php:
<Files "./index.php">
Order deny,allow
Deny from all
Allow from 192.168.24.2
</Files>
您可以在包含“Allow from all”的子目录中编写 .htaccess,从而允许访问这些特定目录以及它们以后的子目录。
这可以使用
mod_rewrite
来完成,如下所示:
RewriteCond %{REMOTE_ADDR} !=192.168.24.2
RewriteRule ^index\.php$ - [F]
第一行检查客户端 IP 地址是否是允许的地址,第二行只是告知服务请求失败(错误 403)。
请记住将
RewriteEngine On
放在建议代码之前的某个位置。
您可以使用 正则表达式 或通过复制
RewriteCond
行来允许多个 IP 地址,如下所示:
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !^192\.168\.24\.[0-9]{1,3}$
RewriteCond %{REMOTE_ADDR} !=192.168.32.6
RewriteRule ^index\.php$ - [F]
上面的示例将允许本地主机访问以及 192.168.24.0/24 子网(包括 192.168.24.6)和 192.168.32.6 中的任何人访问,但不允许 192.168.32.7 或 192.168.2.6 访问。
注意:我在这里只使用了 IPv4 地址,但您可以以相同的方式检查 IPv6 地址。