【问题标题】:Apache2 - Rewrite rule not working (Remote address)Apache2 - 重写规则不起作用(远程地址)
【发布时间】:2014-03-06 19:05:10
【问题描述】:

有人知道,为什么我在 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.x.x 的客户端访问 Web 服务器端口 80,它们将被重定向到不同的路径(/var/www/html /) 然后是所有其他 IP 地址 (/var/www/html/phones/)?

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

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

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

    顺便说一句:激活日志记录也许也有帮助。你可以使用类似的东西

    Apache

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

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

    LogLevel alert rewrite:trace6
    

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

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

    您不应该在生产环境中使用这种日志记录。

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 1970-01-01
      • 2014-10-16
      • 2016-03-14
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多