2015-04-06 90 views
0

我一直在嘗試使用apache .htaccess規則來強制所有網址爲https://www.
對於那些撇清這一點,請記住,我不能使用由於多種原因,重寫規則中的「domain.com」。
如:如何正確強制使用https和www .htaccess

https://domain.com to https://www.domain.com
http://domain.com to https://www.domain.com
http://www.domain.com to https://www.domain.com
但是......


在我的情況我有這麼多的領域(由於是一個WordPress的多點),要添加規則對於每個單獨的域來說都是非常低效的。由於我在網絡模式下使用wordpress MS,我有幾個網站被映射到基本網址,特別是當試圖以非mod重寫的方式強制https時,這些網站似乎很容易中斷。然後,我需要確保所有域名使用www,但MU域名映射不強制WWW從網絡模式的根網站...這是一種模式,允許通過WP多網絡插件網站分離網絡。所以這意味着我需要通過mod重寫強制這個。
我在網上發現了這些變化,但我不確定最乾淨的方法是什麼?

## force HTTPS and www RewriteCond %{HTTP_HOST} (?!^www\.)^(.+)$ [OR] RewriteCond %{HTTPS} off RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] RewriteCond %{HTTPS} off RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI}/ [R=302,L]

什麼是實現這一目標的最佳方式是什麼? 謝謝

回答

0

您可以使用此單一的規則對所有3個條件:

## force HTTPS and www 
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [L,R=302,NE] 

註釋掉,當你在一個新的瀏覽器測試以避免舊的瀏覽器緩存中的所有其他規則。

+0

嗨,我想你可能錯過了我的主機條件@anubhava ...我無法在重寫規則中單獨識別每個域..他們變化太頻繁,太多了....我在想需要'%{HTTP_HOST}%{REQUEST_URI}'來完成這項工作? – 2015-04-06 11:26:07

+0

只注意到WP標籤。你在WP設置中的家庭和網站URL究竟是什麼? – anubhava 2015-04-06 11:28:28

+0

這是我的wp-config:
'define('WP_DEBUG',false); define('DISALLOW_FILE_EDIT',true); define('DISALLOW_FILE_MODS',false); define('WP_MEMORY_LIMIT','512M'); define('WP_ALLOW_REPAIR',false); /*多站點*/ define('WP_ALLOW_MULTISITE',true); define('MULTISITE',true); define('SUBDOMAIN_INSTALL',false); define('DOMAIN_CURRENT_SITE',$ _SERVER ['HTTP_HOST']); define('PATH_CURRENT_SITE','/'); define('BP_ENABLE_MULTIBLOG',true);'每個站點的主頁和站點URL是不同的......它對於網站是「/」。 – 2015-04-06 11:34:59