我正在尝试编写一个重定向规则,该规则将发送指向给定服务器别名的所有传入请求。下面是我的 .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)!)