我最近有一个备用域名(停放),并希望它的行为如下:
我试过这个,但它不起作用:
RewriteCond %{HTTP_HOST} ^(www\.)?alt-domain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.)$ /fakeroot.php [L]
RewriteCond %{HTTP_HOST} ^(www\.)?alt-domain\.com [NC]
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*)$ http://www.main-domain.com/$1 [L,R=301]
每个规则都可以自行运行,但当两者都存在时,对root的请求也会获得重定向。我尝试颠倒顺序,尝试跳过[S = 1],试过[NS],但没有运气。那时我意识到我不是一个htaccess专家,也不是正则表达专家。
非常感谢任何帮助。
d
答案 0 :(得分:0)
问题是L
标记可能doesn't work like you expect,当mod_rewrite
重新检查您的规则时,RewriteCond %{REQUEST_URI} !^/$
会匹配,因为%{REQUEST_URI}
已更新为初始重写后/fakeroot.php
。
有几种不同的方法可以解决这个问题,但我相信这应该可以运作得很好,并且不会涉及太多变化:
RewriteCond %{HTTP_HOST} ^(www\.)?alt-domain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.)$ /fakeroot.php [L]
RewriteCond %{HTTP_HOST} ^(www\.)?alt-domain\.com [NC]
RewriteCond %{REQUEST_URI} !^/(fakeroot\.php)?$
RewriteRule ^(.*)$ http://www.main-domain.com/$1 [L,R=301]