2010-08-24 43 views
0

我最近买了一个替代域(停放),并希望它的行为是这样的:重定向根,所有其它网址以另一种方式,使用htaccess的

  • 上“的请求alt-domain.com/“(root):在没有重定向(200)
  • 的情况下为”alt-domain.com/anyotherpage“服务”main-domain.com/fakeroot“:服务”主域“。 COM/anyotherpage”一个重定向(301)

我尝试这样做,但它不工作:

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

的问题是,L标志可能doesn't work like you expect,当因为%{REQUEST_URI}在初始重写后更新为/fakeroot.phpmod_rewrite重新审视你的规则,RewriteCond %{REQUEST_URI} !^/$比赛。

有几种不同的方式来解决这个问题,但我相信这应该工作做得不够好,它不涉及改变多少:

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] 
+0

我不能让它工作,即使一切看起来罚款时看它。我最终用htaccess重定向除root以外的所有内容,并在检测到备用域时使用主页代码提供不同的内容。 感谢您的帮助 – Deg 2010-08-25 00:46:46

相关问题