有没有人知道,为什么我在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 :(得分: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:'
您应该不在生产环境中使用此类日志记录。