如何限制特定 IP 范围查看 .htaccess 中的特定页面?

问题描述

我试图只允许特定的 IP 范围访问 /user/login。拒绝 /user 子目录下的任何内容就足够了。

到目前为止我已经尝试过:

root.mainloop()

<Location /user>
    Order deny,allow  
    Deny from all
    Allow from 123.45.116.0/24
    Allow from 123.225.232.0/23
    Allow from 123.225.114.0/23
    Allow from 123.9.53
</Location>

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.45\.116\.0/24$
RewriteCond %{REMOTE_ADDR} !^123\.225\.232\.0/23$
RewriteCond %{REMOTE_ADDR} !^123\.225\.114\.0/23$
RewriteCond %{REMOTE_ADDR} !^123\.9\.534$
RewriteRule ^user/? - [F,NC]

没有运气。有人可以帮忙吗?我总是在 htaccess 上挣扎。

解决方法

如果您希望允许特定的 IP 范围(从您的努力中获取)并且 URI 应该从 user 开始,那么您可以尝试以下操作。因此,如果 IP 地址没有出现在提到的 IP 范围内,并且它试图点击 http://lcoalhost:80/user 之类的 URL(例如),那么它将禁止该页面。这是Online demo for regex used

RewriteEngine ON
RewriteCond %{REMOTE_ADDR} !^123\.45\.116\.([0-9]|[0-1][0-9]|2[0-4])$
RewriteCond %{REMOTE_ADDR} !^123\.225\.232\.([0-9]|[0-1][0-9]|2[0-3])$
RewriteCond %{REMOTE_ADDR} !^123\.225\.114\.([0-9]|[0-1][0-9]|2[0-3])$
RewriteCond %{REMOTE_ADDR} !^123\.9\.53
RewriteRule ^user/? - [F,NC,L]

请确保在测试您的 URL 之前清除浏览器缓存。



或者您也可以使用单个条件,一次使用上面或后面的任何一个。

RewriteEngine ON
RewriteCond %{REMOTE_ADDR} !(^123\.45\.116\.([0-9]|[0-1][0-9]|2[0-4])$)|(^123\.225\.232\.([0-9]|[0-1][0-9]|2[0-3])$)|(^123\.225\.114\.([0-9]|[0-1][0-9]|2[0-3])$)|(^123\.9\.53)
RewriteRule ^user/? - [F,L]