使用 .htaccess 我想阻止 3 个 IP 地址查看以下任何页面:
http://url.com/foo
http://url.com/foo/bar
http://url.com/foo/bar/foo
所以 foo 和之后的任何东西。我怎样才能做到这一点?我似乎能找到的只是如何完全阻止一个 IP 地址,但没有什么能阻止它查看网站的某些部分。此外,当他们访问这些页面时,我想向他们显示 404 错误。
使用 .htaccess 我想阻止 3 个 IP 地址查看以下任何页面:
http://url.com/foo
http://url.com/foo/bar
http://url.com/foo/bar/foo
所以 foo 和之后的任何东西。我怎样才能做到这一点?我似乎能找到的只是如何完全阻止一个 IP 地址,但没有什么能阻止它查看网站的某些部分。此外,当他们访问这些页面时,我想向他们显示 404 错误。
您只想阻止目录 /foo/,因此在 /foo/ 中创建一个 .htaccess 文件(直观地说,它只适用于 /foo/)。然后,像往常一样使用相同的语法来阻止 IP 地址:
order allow, deny
deny from 127.0.0.1
allow from all
我相信这会返回 403 - Forbidden。不确定您将如何返回 404。(您可以使用与 404 错误相同的页面来处理 403 错误,并且用户不太可能检查响应状态代码)
编辑:如果您从 开始,user4035 的答案是否有效RewriteEngine On
?
试试这个:
RewriteCond %{REMOTE_ADDR} ^111.111.111.111$ [OR]
RewriteCond %{REMOTE_ADDR} ^222.222.222.222$ [OR]
RewriteCond %{REMOTE_ADDR} ^333.333.333.333$
RewriteCond %{REQUEST_URI} ^/foo$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/foo/bar$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/foo/bar/foo$ [NC]
RewriteRule .* - [R=404,L]
这实现了条件:
IF (A OR B OR C) AND (D OR E OR F) -> 显示 404 错误
为了以防万一,我使 url 不区分大小写。