2015-10-18 1532 views
1

我們的第二個問題關於堆棧溢出!我們的目標是將我們網站的所有請求永久重定向至https://www.example.com。我們目前有以下代碼將http://example.comhttp://www.example.com重定向到https://www.example.com,但是,在花費了相當一段時間尋找堆棧溢出解決方案之後,我們尚未找到將https://example.com重定向到https://www.example.com的方法。非常感謝您的幫助。http://example.com,http://www.example.com和https://example.com到https://www.example.com

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

的[L]標誌使mod_rewrite的停止處理規則集。 – user993553

回答

1

更好的在一個單一的規則來處理這個問題:

RewriteEngine On 

# add www and force https in same rule 
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=302,L,NE] 
  • 保持這個規則作爲你的第一個規則。
  • 確保在測試之前清除瀏覽器緩存。
  • 更改302301已經過測試。
+1

完美!謝謝@anubhava !!!! – haadaa

0

爲了補充@ anubhava對阿帕奇優雅的解決方案,我們最近找到了一種方法做同樣的Nginx的:

server { 
     listen 80; 
     server_name example.com; 
     return 301 https://www.example.com$request_uri; 
} 
server { 
     listen 80; 
     server_name www.example.com; 
     return 301 https://www.example.com$request_uri; 
} 
server { 
     listen 443; 
     server_name example.com; 
     return 301 https://www.example.com$request_uri; 
}