2013-06-04 153 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