2011-12-03 17 views
0

我有一個Django支持的網站,我試圖解決「canonical hostname」問題。我希望www.example.com重定向到example.com。我已經嘗試了Apache documentation here中的兩種技術(向下滾動到規範主機名)。當在Firefox上重定向規範主機名時獲得雙斜槓(Django)

我目前正試圖mod_rewrite的方法,我有這個虛擬主機容器:

RewriteEngine on 
    RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
    RewriteCond %{HTTP_HOST} !^$ 
    RewriteRule ^/?(.*)$ http://example.com/$1 [L,R=301,NE] 

這對我的作品,除了一個案例。在Firefox中,如果我在瀏覽器中輸入www.example.com,它會重定向,我在URL欄中看到:example.com//(注意2個斜線)。

但是,像這樣的東西將正常工作:www.example.com/news/被重定向到example.com/news/

我只在Firefox的根URL上看到這個。它似乎在Chrome,IE9和Opera下運行良好(也許這些瀏覽器吃雙斜槓?)。使用朋友的我的Mac說在Safari中它很好,但是他也看到了Firefox中的問題。

只要Django設置去,我使用的默認值APPEND_SLASH=True。我不知道Django是否與它有任何關係,但是我之前已經在靜態HTML網站上嘗試了類似上面的mod_rewrite規則,並且它似乎總是有效。

回答

0

這個奇蹟般的停止發生,所以我會假設在某個時候Firefox有問題。

1

嘗試將其放入括號忽略「/」,所以,wheter它在這裏與否,最後一部分應該工作(這是不是$ 1了,但$ 2的重定向URL):

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule ^(/?)(.*)$ http://example.com/$2 [L,R=301,NE] 

請告訴我,如果它的工作。