繁体   English   中英

htaccess:针对不同IP地址的不同重写规则

[英]htaccess: different rewrite rules for different ip addresses

是否可以仅使用一个.htaccess文件为不同的IP地址应用不同的重写规则?

我有这些规则:

RewriteEngine on
#RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#RewriteRule ^(.*)$ /version/1.0/index.php?r=$1 [L]
RewriteRule ^(.*)$ /version/2.0/index.php?r=$1 [L]

最后两个规则都可以正常工作,我可以选择启用哪个规则。 我想以某种方式为自己启用一个规则来处理开发版本和其他生产规则。

我能以某种方式使用IP地址过滤吗? 这甚至可能吗? 有没有其他替代解决方案,所以我可以启用两个规则,一个用于我的开发,另一个用于生产?

尝试:

RewriteEngine on

RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /version/1.0/index.php?r=$1 [L]

RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.123
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /version/2.0/index.php?r=$1 [L]

您需要复制重写条件。 每套RewriteCond仅适用于紧随其后的RewriteRule 因此,第一条规则将适用于未从IP地址访问网络服务器的所有人:123.456.789.123

你也可以用这个:

Options All -Indexes
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123
RewriteRule ^(.*)$ /version/1.0/index.php?r=$1 [L,QSA]

RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.123
RewriteRule ^(.*)$ /version/2.0/index.php?r=$1 [L,QSA]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM