如何使用.htaccess从非安全版本的站点重定向到安全版本的站点

时间:2014-04-16 23:03:28

标签: php apache .htaccess redirect ssl

我有4个网站的多个网站UCC SSL证书。无论他们如何输入网址,我都希望确保用户能够访问我网站的安全版本。如果用户键入裸域名,例如“mysite.com”,我使用的.htaccess文件将将其重定向到https://www.mysite.com。到现在为止还挺好。如果用户键入“www.mysite.com”,.htaccess文件会将其定向到https://www.www.mysite.com。它增加了一个额外的“www。”到URL。我想修复它,以便用户被重定向到https://www.mysite.com他们是否使用www。

到目前为止,这是我的.htaccess文件:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# secure htaccess file
<Files .htaccess>
order allow,deny
deny from all
</Files>

# Cache files of specific types for 2 weeks
<filesMatch "\.(jpg|jpeg|png|gif|htm|html|css|js)$">
Header set Cache-Control "max-age=1209600, public"
</filesMatch>

我所拥有的UCC SSL证书只有在www存在的情况下才能保护网站(例如www.mysite.com)。如果没有www(例如mysite.com),它将无法保护裸域名。任何帮助将不胜感激。谢谢。

我需要指定别的东西。 UCC SSL证书是在主站点上发布的,例如www.example.com。它也适用于example.com。其他三个SAN名称仅用于前面的www。我希望这是有道理的。

1 个答案:

答案 0 :(得分:2)

这应该有效:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] 

唯一的区别是www.已从第二个RewriteRrule中移除。