针对带有特定服务器别名的所有请求的重定向规则

针对带有特定服务器别名的所有请求的重定向规则

我正在尝试编写一个重定向规则,该规则将发送指向给定服务器别名的所有传入请求。下面是我的 .conf 文件的样子。我在与 foo.com 相关的第一条规则上遇到了问题。对于别名为 foo.com 的请求,重写根本就不会发生。我甚至不知道如何调试这个...

    NameVirtualHost xxx.xx.x.194
    <VirtualHost xxx.xx.x.194>
     ServerName foo.com
      ServerAlias www.foo.com

      RewriteEngine on
      RewriteRule ^(.*)$ /cgi-bin/redirect.py?url=spencer [L,QSA,PT]
      SetEnv force-proxy-request-1.0 1
      SetEnv proxy-nokeepalive 1
    </VirtualHost>
    <VirtualHost xxx.xx.x.194>
     ServerName bar.com
     ServerAlias www.bar.com

     Include /etc/httpd/conf.d/zumodo.common

     ErrorLog logs/zumodo_errors_log
     CustomLog logs/zumodo_log combined
      SetEnv force-proxy-request-1.0 1
      SetEnv proxy-nokeepalive 1
    </VirtualHost>

答案1

尝试

RewriteRule /?(.*) /cgi-bin/redirect.py?url=spencer [L,QSA,PT]

为了调试,请尝试添加:

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

答案2

此规则:

RewriteRule ^(.*)$ /cgi-bin/redirect.py?url=spencer [L,QSA,PT]

意思是:“将所有请求重定向到/cgi-bin/redirect.py?url=spencer

这真是你想要做的事吗?

如果不是,请给出两个传入 URL 的示例以及应如何转换它们。

无论如何,以下是我的两个常见提示:

两个提示:


请尝试使用该RewriteLog指令:它可以帮助您追踪此类问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

我最喜欢的检查正则表达式的工具:

http://www.quanetic.com/Regex(不要忘记选择 ereg(POSIX)而不是 preg(PCRE)!)

相关内容