6

是否可以仅使用一个 .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地址过滤吗?这甚至可能吗?是否有任何其他替代解决方案,以便我可以同时启用两个规则,一个用于我的开发,另一个用于生产?

4

2 回答 2

3

尝试:

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

于 2013-10-15T20:41:41.240 回答
0

你也可以使用这个:

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]
于 2013-10-15T21:01:29.627 回答