2012-12-26 25 views

回答

0

我已經編輯了下面的代碼,盡我所能沒有一種方法來測試它。它應該讓你關閉,如果它不工作。

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

RewriteCond %{HTTP_HOST} ^(.*)$ [NC] 
RewriteRule ^/(.*) mydomain.com/%1/$1 [L] 

應該做的伎倆。雖然我不能很快測試它。有兩件關鍵的事情要注意: 你必須在RewriteCond中使用HTTP_HOST來測試域。在RewriteRule行中使用%1從括號中的HTTP_HOST行獲取變量。

您還必須將任何請求重定向到www,非首先使用R = 301永久重定向。有可能不這樣做,但目前我不確定如何提取主機的非www部分,而不管它是否存在。對於訪問www.somedomain.com的任何人,R = 301會將重定向消息發送回瀏覽器。然後瀏覽器會打到somedomain.com,你的第二個重寫版本將會匹配它。由於它的301(永久)瀏覽器將緩存重定向,並始終爲用戶自己做非www。

如果這不起作用,比較對URL重定向其他一些教程,並同時參閱本頁面精彩: http://httpd.apache.org/docs/2.2/rewrite/intro.html

+0

我的道歉,我編輯上面進一步的代碼,使之爲盡我所能,而無需測試。如果沒有人迴應,祝你好運! – James

+0

這不會導致重定向循環嗎? 'userdomain.com/test'=>'mydomain.com/userdomain.com/test'=>'mydomain.com/mydomain.com/userdomain.com/test'等。 – Gerben

+0

它不應該。第一條Cond/Rule對將任何與www.something.com匹配的東西重新路由到something.com。它會發生一次,因爲something.com在丟失www時不會重定向。第二個條件/規則對將在something.com上提取並將其內部傳輸到mydomain.com/something.com/我們是否正在追蹤對方? – James