2012-12-14 79 views
2

所以我一直試圖讓這個重定向代碼現在工作幾個小時,這讓我發瘋。我有相反的方向(非www到www)與此代碼工作:.htaccess將www重寫爲非www重定向問題

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteRule ^(.*) http://www.%{HTTP_HOST} [R=301] 

我發現了上述代碼在這裏: https://stackoverflow.com/questions/3013730/redirecting-non-www-to-www

我不得不刪除從第三行的$ 1代碼來得到它的工作:

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

我需要的是www.example.com重定向到example.com

並在每一頁上www.example.com重定向到網址完全相同,減去WWW

www.example.com/test --->example.com/test

www.example.com/begin.php --->example.com/begin。 php

等等等等。由於我有最上面的代碼部分工作在相反的方向,我認爲只需切換幾個事情並在幾分鐘內完成工作就很容易,但我總是會遇到404s,無限循環,以及什麼有你。主要問題是我不完全理解這部分代碼:

^[^.]+\.[^.]+$ 

apache greenie的任何幫助?太感謝了!

--- 編輯 ---

我發現了一個代碼,是更接近我想要的,但它有自己的問題的份額。的代碼是:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule ^.*$ http://example.com%{REQUEST_URI} [R=301,L] 

有兩個問題與此代碼:

1)當我在example.com/test鍵入,它首先穿過www.example.com/test如果可能的話,我希望避免這種情況。

2)當我在example.com/test鍵入,它在example.com/test.php結束了,我想避免具有與所述.PHP擴展作爲文件最終目的地。有什麼建議麼?

回答

0

試試這個:

#www to non-www 
RewriteEngine On 
#Important to place 
RewriteBase/
RewriteCond %{HTTP_HOST} www\.example\.com$ [NC] 
RewriteRule ^(.*)/?$ http://example.com/$1 [L,R=301] 
+0

謝謝您的回覆!正如所寫,這給了我一個無限循環像example.com/example/example/example/example(等等等等)。我發現另一個代碼主要是我想要的,但它仍然給我一些問題(請參閱上面的編輯)。 –

+0

@RichardColeman我更新了我的答案,以防止任何循環的可能性。 –

+0

再次感謝您的幫助。當我嘗試www.example.com時,新代碼僅僅是404s。我開始認爲這是我的網絡主機(1和1),這是導致問題的原因,因爲幾乎所有其他人都沒有遇到同樣的問題。 –