问题描述
我试图只允许特定的 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]