2017-02-09 155 views

回答

1

互聯網充滿了解決方案。所有這些例子都沒有回答你的問題?

您無法以可靠的方式在單個步驟中完成這兩個重寫。相反,你需要兩個步驟:

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [END,R=301] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [END,R=301] 

注:如果您使用的是你有L標誌更換END標誌一個很老的HTTP服務器的版本,應該工作一樣在這種情況下。


而且一般提示:你應該總是喜歡將這種規則的HTTP服務器主機的配置裏面,而不是使用動態配置文件(「的.htaccess」)的。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。它們僅作爲最後一種選擇,用於您無法控制主機配置的情況(閱讀:真正便宜的託管服務提供商),或者您擁有依賴編寫自己的重寫規則的應用程序(這是一個明顯的安全噩夢)。

+0

我很感激你對這個問題的所有評論,但現在最簡單的方法就是使用.htaccess。一旦我以這種方式工作,我將深入研究主機配置。順便說一句:我試過你的代碼,但我得到內部服務器錯誤。 –

+0

建議我必須使用L而不是END –

+0

當然,這意味着您使用的是舊版本的Apache http服務器。只要你不會干涉其他重寫規則,這樣就可以正常工作。 – arkascha