我想要一定范围的ips(Canada Country Block IPS)只能在我的登录页面(http://www.mysite.com/index.php?m=account_login)中使用POST方法注册页面 (http://www.mysite.com/index.php?m=account_register) 但是,我希望所有ips都可以访问我的主站点http://www.mysite.com/index.php并能够使用POST方法,例如我们的联系页面 (http://www.mysite.com/index.php?m=contactus)
谢谢。
<Limit GET POST>
order deny,allow
# Country: CANADA
# ISO Code: CA
# Total Networks: 6,365
# Total Subnets: 79,978,496
allow from 23.16.0.0/16
allow from 23.17.0.0/16
allow from 24.36.0.0/16
allow from 24.37.0.0/16
...
allow from 192.197.216.0/24
allow from 216.254.192.0/19
#
deny from all
</Limit>
答案 0 :(得分:1)
没有直接的方法来实现这个,但我自己做了一个小技巧:-D
Limit
仅检查请求方法,因此无法检查文件或URL。解决方案是使用FilesMatch
指令。但是在这里,我们有一个问题,就像我一样:QUERY STRING :-(。
这个解决方案是使用RewriteRule
RewriteRule login.html index.php?m = account_login [L,QSA] RewriteRule register.html index.php?m = account_register [L,QSA]
现在,我们拥有了我们想要的一切:
<FilesMatch "(login|register)\.html$">
<Limit GET POST>
order deny,allow
# Country: CANADA
# ISO Code: CA
# Total Networks: 6,365
# Total Subnets: 79,978,496
allow from 23.16.0.0/16
allow from 23.17.0.0/16
allow from 24.36.0.0/16
allow from 24.37.0.0/16
allow from 192.197.216.0/24
allow from 216.254.192.0/19
deny from all
</Limit>
</FilesMatch>
RewriteRule (register|login)\.html index.php?m=account_$1&allow=yes [L,QSA]
RewriteCond %{QUERY_STRING} m=account_(register|login)
RewriteCond %{QUERY_STRING} !allow=yes
RewriteRule index\.php - [F,L]
我更喜欢创建新文件以登录或注册以避免RewriteRule
s。