Apache2 - 重写规则不起作用(远程地址)

时间:2014-03-06 10:09:56

标签: apache mod-rewrite

有没有人知道,为什么我在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 /)?

1 个答案:

答案 0 :(得分: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:也许激活日志也很有帮助。你可以使用像

这样的东西

Apache&lt; 2.4

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

Apache&gt; = 2.4 (请参阅有关logging in apache 2.4的更多信息)

LogLevel alert rewrite:trace6

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

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

您应该在生产环境中使用此类日志记录。