我正在使用如下重定向规则运行 Apache:
RewriteCond %{HTTP_HOST} ^1st-domain\.com
RewriteRule ^(.*)$ http://2nd-domain.com$1 [R=permanent,L]
这成功重定向 http://1st-domain.com至http://2nd-domain.com 但是,当 REQUEST_URI 为空时,我想重定向到第三个域。
RewriteCond %{HTTP_HOST} ^1st-domain\.com$
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ http://3rd-domain.com$1 [R=permanent,L]
但这不起作用,而是重定向到 2nd-domain.com
我的规则是这样排序的:
RewriteCond %{HTTP_HOST} ^1st-domain\.com$
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ http://3rd-domain.com$1 [R=permanent,L]
RewriteCond %{HTTP_HOST} ^1st-domain\.com
RewriteRule ^(.*)$ http://2nd-domain.com$1 [R=permanent,L]
有什么建议吗?预先感谢您。
更新
- 空 REQUEST_URI:http://1st-domain.com
- 非空REQUEST_URI:http://1st-domain.com/something
第一条规则应将空 request_uri 定向到 3rd-domain.com,第二条规则应将非空 request_uri 定向到 2nd-domain.com
有用的花絮 您可以使用以下代码片段打开 mod_rewrite 调试:
<IfModule mod_rewrite.c>
RewriteLog "/home/domain.com/logs/rewrite.log"
RewriteLogLevel 3
</IfModule>
非常有用的调试选项,我以前不知道。
最佳答案
这应该有效:
RewriteCond %{HTTP_HOST} ^1st-domain\.com
RewriteRule ^$ http://3rd-domain.com [R=permanent,L]
RewriteCond %{HTTP_HOST} ^1st-domain\.com
RewriteRule ^(.+)$ http://2nd-domain.com/$1 [R=permanent,L]
希望对你有帮助!
注意:httpd.conf 和 .htaccess 之间的 REQUEST_URI 略有不同,它以 httpd.conf 中的额外反斜杠开头。这意味着在 httpd.conf 中,第一个重写规则应该是 ^\/$
,而不仅仅是 ^$
。
关于apache - 使用 Apache mod_rewrite 检测空 REQUEST_URI 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684940/