2010-06-04 56 views
0

我希望所有的流量去:擺脫www的最佳方式。和

http://www.domain.com

http://domain.com

|

V

http://main.domain.com

我可以使用PHP的.htaccess或者也可以是,我使用Zend框架。請注意,我也有:

http://sub1.domain.com

http://sub2.domain.com

THX

+0

它是如何擺脫www或如何重定向請求的問題?你能在問題上更協調一致嗎? – 2010-06-04 05:16:05

+0

我需要重定向www。和。請妥善保管.main。,keep/any/path/info /。這是我的Zend框架設置的結構。 – y2k 2010-06-04 05:16:55

回答

6

此規則將保留完整的URI

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^(domain.com)$ [NC] 
RewriteRule ^(.*)$ http://main.%1/$1 [R=301,L,QSA] 

PS:我不能想出如何使第二線沒有明確的域規格更加便於攜帶。我會感謝能糾正我的人。

+0

需要mod_rewrite才能正常工作,但這通常是啓用的。這些規則進入'.htaccess'文件。 – Thorarin 2010-06-04 05:23:22

+0

@Thorarin:他肯定已經啓用了,因爲這句話:「請求.main,keep/any/path/info /」。但是,對於任何稍後會閱讀的人來說 - 這是很好的說明。 – zerkms 2010-06-04 05:25:31

+0

是的,我有mod_rewrite,所以這應該工作。謝謝 – y2k 2010-06-04 05:25:42

1

爲什麼不使用ServerName指令?

1

當域名服務器協議被設計爲處理完全像這樣的重定向時,服務器端解決方案似乎有點不必要。路徑信息和POST變量被透明地保存。

如果您有權訪問您網站的DNS記錄,最好使用CNAME record將用戶重定向到正確的域名。

CNAME指向人們將尋找一個域(例如site.com)的人指向另一個域(例如main.site.com)。這一切都在你的服務器上沒有任何工作。

只需兩條記錄添加到您的指向CNAME記錄:

domain.com => main.domain.com 
www.domain.com => main.domain.com 

如果您當前的DNS提供商不提供此,請嘗試使用ZoneEdit,誰在過去的工作對我們非常好。

+1

CNAMES仍然會爲domain.com和www.domain.com發送瀏覽器標題,他希望這些perm重定向到main.domain.com,這會影響搜索排名分割。 – Tracker1 2010-06-04 06:07:14

1

你正在做的是一個Web服務器的功能。所以讓Web服務器處理請求。所以最有效的方法是使用.htaccess重定向指令。 使用PHP做它是一種低效率的方式。