2010-03-02 78 views

回答

19

嘗試:

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

而且沒有mod_rewrite

<VirtualHost 10.0.0.1:80> 
     ServerName www.example.com 
     Redirect permanent/http://example.com/ 
</VirtualHost> 

虛擬主機可以用來通過完成以下網址中的步驟:Setting Up A Virtual Host in Apache

+0

事情是這樣的:在http://www.example.com/的網頁生成了過多的重定向。清除您的本網站的Cookie或允許第三方Cookie可以解決此問題。如果沒有,這可能是一個服務器配置問題,而不是您的計算機的問題。 *我刪除了這些,但網站仍然停機!爲什麼這樣?* – Yeti 2010-03-02 07:38:58

+0

問題1.你是否同時使用兩者?問題2.您是否將IP地址更改爲正確的值?問題3.你是否擁有example.com? – 2010-03-02 07:40:07

+1

虛擬主機方法的+1。直到你真的需要的時候才使用mod_rewrite。 – bobince 2010-03-02 07:40:10

37

這裏是一個更廣義的解決方案:

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC] 
RewriteRule^http://%1%{REQUEST_URI} [L,R=301] 
+3

有沒有辦法檢測和重寫用戶來自的同一個URL方案(http或https)? 'http:// www.example.com /'爲'http:// example.com /'和'https:// www.example.com /'爲'https:// example.com'。 – 2012-09-11 23:52:15

+0

REQUEST_URI是否包含index.php?出於某種原因,當我訪問www.example.com時,它會重定向到www.example.com/index.php – CMCDragonkai 2013-12-03 08:12:56

+0

@CMCDragonkai如果您想追加原始查詢字符串,請不要忘記QSA標誌。 – jordanbtucker 2015-02-06 18:33:18

8

凱爾的回答的一個小調整,我把一/在重寫規則匹配條件,像

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

否則,你會得到一個雙斜槓結果。

http://www.example.com/smth -> http://example.com//smth 
+0

。 – NilsB 2015-08-07 13:07:42

4

我總是先使用307(臨時重定向),因爲如果你弄錯了,一些瀏覽器會永久地緩存它。我最終安裝了谷歌瀏覽器,僅僅是因爲即使我刪除了整個緩存,我也無法讓我的Firefox忘記重定向。

2

這是一個解決方案,如果你不想要一個硬編碼的域名。不要忘記啓動重寫引擎,否則這將不起作用!

# Start rewrite engine 
<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 
</IfModule> 

# Rewrite "www.example.com -> example.com" 
<IfModule mod_rewrite.c> 
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
    RewriteRule^http://%1%{REQUEST_URI} [R=301,L] 
</IfModule> 
相關問題