pch*_*10k 6 apache url mod-rewrite url-rewriting
我正在使用这样的重定向规则运行Apache:
RewriteCond %{HTTP_HOST} ^1st-domain\.com
RewriteRule ^(.*)$ http://2nd-domain.com$1 [R=permanent,L]
Run Code Online (Sandbox Code Playgroud)
这成功地将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]
Run Code Online (Sandbox Code Playgroud)
但这不起作用,而是重定向到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]
Run Code Online (Sandbox Code Playgroud)
有什么建议?先感谢您.
UPDATE
第一条规则应该将空的request_uri指向3rd-domain.com,第二条规则应该将非空的request_uri指向2nd-domain.com
有用的TIDBIT 您可以使用此代码段打开mod_rewrite调试:
<IfModule mod_rewrite.c>
RewriteLog "/home/domain.com/logs/rewrite.log"
RewriteLogLevel 3
</IfModule>
Run Code Online (Sandbox Code Playgroud)
非常有用的调试选项,我不知道.
小智 10
我使用以下内容来捕获空的REQUEST_URL:
RewriteEngine on
RewriteCond %{REQUEST_URI} "^/$"
RewriteRule ^(.*) http://%{HTTP_HOST}/my/another/url
这应该工作:
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]
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
注意:REQUEST_URI在httpd.conf和.htaccess之间略有不同,它以httpd.conf中的额外反斜杠开头.这意味着在httpd.conf中,第一个重写规则应该是^\/$
,而不仅仅是^$
.