2013-06-04 105 views
1

我們安裝了WP多站點主站點和一個子站點。 我們剛剛從Godaddy購買了UCC證書,並希望通過https保護整個網站。使用.htaccess強制執行www AND https

我們正在尋找: 重定向domain.com到www.domain.com 重定向到http://www.domain.comhttps://www.domain.com

換句話說,力www和HTTPS上的一切..

我已經嘗試了幾修改我們的.htaccess文件沒有成功。似乎會導致Google Chrome出現問題。

在此先感謝您的任何反饋意見或建議!

小號克蘭斯頓

這是我目前的.htaccess文件:

## EXPIRES CACHING ## 
<IfModule mod_expires.c> 
# Enable expirations 
ExpiresActive On 
# Default directive 
ExpiresDefault "access plus 1 month" 
# My favicon 
ExpiresByType image/x-icon "access plus 1 year" 
# Images 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/png "access plus 1 month" 
ExpiresByType image/jpg "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
# CSS 
ExpiresByType text/css "access 1 month" 
# Javascript 
ExpiresByType application/javascript "access plus 1 year" 
<IfModule mod_headers.c> 
    SetEnvIf Origin "http(s)?://(www\.)?(www.simplymusicteachers.com/wp-admin/admin-ajax.php|www.simplymusicteachers.com)$" AccessControlAllowOrigin=$0$1 
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin 
</IfModule> 

這裏是用額外的代碼中添加的文件:

## EXPIRES CACHING ## 
<IfModule mod_expires.c> 
# Enable expirations 
ExpiresActive On 
# Default directive 
ExpiresDefault "access plus 1 month" 
# My favicon 
ExpiresByType image/x-icon "access plus 1 year" 
# Images 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/png "access plus 1 month" 
ExpiresByType image/jpg "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
# CSS 
ExpiresByType text/css "access 1 month" 
# Javascript 
ExpiresByType application/javascript "access plus 1 year" 
<IfModule mod_headers.c> 
    SetEnvIf Origin "http(s)?://(www\.)?(www.simplymusicteachers.com/wp-admin/admin-ajax.php|www.simplymusicteachers.com)$" AccessControlAllowOrigin=$0$1 
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin 
</IfModule> 
Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## force HTTPS and www. if any of them are not already present 
RewriteCond %{HTTP_HOST} (?!^www\.)^(.+)$ [OR] 
RewriteCond %{HTTPS} off 
RewriteRule^https://www.%1%{REQUEST_URI} [R=302,L] 
+0

我發現這個線程,試了一下:http://stackoverflow.com/questions/8929623/generic-non-www- to-www-and-non-http-to-https?rq = 1,但我在Google Chrome中收到舊錯誤消息:錯誤310(net :: ERR_TOO_MANY_REDIRECTS):有太多重定向。 – Scranston

+0

非常感謝Anubhava的回覆。我想弄清楚如何通過httpd.conf啓用mod_rewrite和.htaccess。我相信.htaccess已啓用,因爲該文件位於我的根目錄中。我仍然試圖解決httpd.conf部分;有什麼建議? – Scranston

+0

您將該評論留在了錯誤的地方,請在我的回答下方留下評論,以便我收到通知。建議您嘗試我的答案,並讓我知道是否有任何問題。 – anubhava

回答

4

啓用mod_rewrite的和通過的.htaccess httpd.conf然後把這個代碼放在你的.htaccessDOCUMENT_ROOT目錄下:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## force HTTPS and www. if any of them are not already present 
RewriteCond %{HTTP_HOST} (?!^www\.)^(.+)$ [OR] 
RewriteCond %{HTTPS} off 
RewriteRule^https://www.%1%{REQUEST_URI} [R=302,L] 

確認工作正常後,將R=302更換爲R=301。避免在測試mod_rewrite規則時使用R=301(永久重定向)。

編輯如果由於某種原因不支持回顧後嘗試:

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

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [OR] 
RewriteCond %{HTTPS} off 
RewriteRule^https://www.sub.domain.com%{REQUEST_URI} [R=302,L] 
+0

我想嘗試你的答案,但我不確定正確的語法。我做了一些研究並試圖弄清楚,但沒有成功。我也沒有提到我們需要將主站點domain.com重定向到https://www.domain.com以及sub.domain.com到https://www.sub.domain.com。這增加了一層複雜性。仍然有問題.. – Scranston

+0

好吧,現在檢查編輯的答案,這將適用於'domain.com'和'sub.domain.com' – anubhava

+0

我們實際上需要將主站點domain.com重定向到www dot domain.com以及sub.domain.com到www.dot sub.domain.com。這增加了一層複雜性。仍然有問題。 – Scranston