无法使用htaccess中的重写将HTTP重定向到HTTPS

时间:2013-07-07 20:58:29

标签: regex .htaccess mod-rewrite ssl https

我已经尝试使用.htaccess中的几个不同的解决方案在我的网站上将HTTP重定向到HTTPS,但没有一个有效。   嗯,实际上如果我直接输入它确实有效:

(仅举例)http://mywebsite.com

进入浏览器地址栏....但如果我尝试以任何其他方式重定向网址,它将无法正常工作。如果我尝试链接到Google http://mywebsite.com/上列出的我的网页,则不会重定向到https://www.mywebsite.com。如果有人从搜索引擎点击指向我页面的链接,我需要它从HTTP重定向到HTTPS。

到目前为止,我已经尝试过:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

然后我试了......

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

然后我试了......

RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R,L]

没有用。我还应该尝试什么? (此网站托管在使用apache Web服务器的Web托管服务站点上)。此外,我有一个页面的SSL证书,如果这有任何区别。

1 个答案:

答案 0 :(得分:3)

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

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

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

提示:清除浏览器缓存或使用其他浏览器进行测试。