2014-03-06 48 views
1

有没有人有任何想法,为什么我在Apache2配置重写规则不起作用?Apache2 - 重写规则不起作用(远程地址)

<VirtualHost *:80> 
RewriteEngine On 
RewriteCond %{REMOTE_ADDR} ^192\.168\.123\.121$ 
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.107$ 
RewriteCond %{REMOTE_ADDR} ^10\.17\. 
RewriteRule ^(.*)$ /var/www/html/$1 

    DocumentRoot "/var/www/html/phones" 
    ServerName 127.0.0.1 
</VirtualHost> 

我想要做的是,如果从IP地址的客户端192.168.123.121,192.168.1.107或从网络10.17.xx前来Web服务器端口80,他们将被重定向到不同的路径(/ VAR/www/html /)然后所有其他IP地址(/ var/www/html/phones /)?

回答

0

据我所知,有一个重写规则的多重写条件由逻辑AND组合。因此,我会尝试“或下一条件”(OR)选项:

RewriteCond %{REMOTE_ADDR} ^192\.168\.123\.121$ [OR] 
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.107$ [OR] 
RewriteCond %{REMOTE_ADDR} ^10\.17\. 

BTW:也许它有助于激活日志记录了。您可以使用类似

阿帕奇< 2.4

RewriteEngine On 
RewriteLog "/var/log/httpd/rewrite.log" 
RewriteLogLevel 3 

阿帕奇> = 2.4(详见有关logging in apache 2.4

LogLevel alert rewrite:trace6 

在后一种情况下,你应该管的通过“fgrep”查找日志文件以查找有趣的日志条目。例如:

tail -f /var/log/httpd/error_log | fgrep '[rewrite:' 

你应该在生产环境中使用这种记录的。

+0

很好,这个工程([OR]),谢谢! – user3387554