2017-03-13 111 views
0

的.htaccess重定向我想爲2分的情況下重定向:的WWW問題和https問題

  1. WWW
  2. HTTPS

我目前使用在以下我的.htaccess文件:

RewriteEngine on 

#RewriteCond %{HTTP_HOST} ^www\.egps\.org [NC] 
#RewriteRule ^(.*)$ https://website.org/$1 [L,R=301] 

RewriteCond %{SERVER_PORT} ^80$ 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

我注意到前兩行,因爲他們造成了問題。雖然答案搜索#2我發現下面的接受的答案:

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule ^(.*)$ https://www.%1%{REQUEST_URI} [L,R=301,NE] 

可有人請解釋如何我可能會改變此代碼重定向到NON WWW而不是WWW

任何人都可以翻譯成非常簡單的語言這些代碼行實際上說什麼?這是我收集迄今...

  1. 如果URL沒有WWW
  2. 如果URL之前沒有通過HTTPS
  3. 不知道這一個
  4. 重寫URL中加入HTTPS://www. URL

回答

1

我建議實施兩個單獨的重定向規則。這樣做的優點是,它只會導致一個重定向適用於所有情況,並更容易閱讀/維護:

RewriteEngine on 

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

RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}{REQUEST_URI} [NE,R=301] 

這第一個條件中提取的主機名的部分,而不領先www.

這些規則適用於http服務器主機配置,同樣適用於動態配置文件(.htaccess樣式文件)。


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

+0

是的,現在好了。謝謝。 – starkeen

+0

我會在哪裏完成這些重定向?我使用cPanel,並看到重定向的鏈接,但不清楚如何輸入您的建議。同樣在我的.htaccess文件中,我有以下內容: – Leslie

+0

對不起...無法編輯我上面的評論。我會在哪裏完成這些重定向?我使用cPanel,並看到重定向的鏈接,但不清楚如何輸入您的建議。我使用.htaccess來顯示維護頁面或404頁面等其他情況。 – Leslie