2013-06-28 65 views
1

我萃取下面的代碼從這裏在計算器(Enforce www and trailing slash with mod_rewrite htaccess on a multi-domain site)問題,並直接從apache.orgMOD-重寫/重寫規則:強制的https:// WWW作爲協議和域

的情況下由三個要求:

  1. 保證,是生產域以www總是啓動。
  2. 不追加WWW。到beta.domain.tld,dev.domain.tld,mobile.domain.tld
  3. 終於保證,每一個URL獲取改寫爲https。

我想出了以下條件:

# Enforce www, if no subdomain is given 
RewriteCond %{HTTP_HOST} !^(beta|dev|mobile|www)\. 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI}/ [R] 

# Enfore SSL for all Domains 
RewriteCond %{HTTPS} !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

所提到的規則按預期工作,雖然一個單一的情況下不能正常工作

https://domain.tld/沒有正確重定向到https://www.domain.tld/

有人能幫助我嗎?

回答

2

試着用這個替換您的2代碼:

RewriteCond %{HTTP_HOST} !^(?:beta|dev|mobile|www)\. [NC] 
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L] 

RewriteCond %{HTTPS} =off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L] 
+0

THX對於這一點,就像一個風情萬種! –

+0

不客氣,很高興它的工作。 – anubhava