2013-02-05 47 views
1

我創建了一個.htaccess文件,它執行兩件事:將http重定向到https和www。非www。下面是代碼:在Firefox中的Mod重寫問題

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

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

這正常在Chrome,Safari和Opera,但是,當我例如在Firefox中鍵入profstream.com/sandbox/login.php它重定向到https://profstream.com/https://www.profstream.com/sandbox/login.php某種原因。我在這裏做錯了什麼?

回答

1

我認爲你缺少[L],也[QSA],試試這個:

RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] 

L是離開,否則就會在此之後使用的規則。
QSA是添加URL的查詢字符串。

第二部分應該是這樣的,我認爲:

不知道有關RewriteBase /是,需要

RewriteCond %{HTTP_HOST} ^www.profstream.com [NC] 
    RewriteRule (.*) https://profstream.com%{REQUEST_URI} [QSA,L] 
,?

如果你想既要發生的,也許你應該顛倒順序

RewriteCond %{HTTP_HOST} ^www.profstream.com [NC] 
    RewriteRule (.*) https://profstream.com%{REQUEST_URI} [QSA,L] 

    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] 
+0

嗯......仍然在Firefox同樣的事情......就像我說的,它的怪異,它的一切工作正常其他瀏覽器減去Firefox。不過謝謝你的詳細回答,我真的很感激。 – Arun

+0

你真的確定你正在使用我寫的建議嗎?當您在問題中使用規則時,合理的做法是使用「組合」URL獲得結果。 **不要**使用'RewriteBase'。你嘗試了兩個建議? (以相反的順序使用規則)。 – 244an

+0

謝謝!原來你的代碼工作得很好。只需要清除歷史記錄。 – Arun