修改.htaccess强制HTTP重定向为HTTPS链接

土木坛子采用HTTPS SSL加密链接形式访问网站有几年了,但一直也可以通过HTTP明文形式访问(国内用户现在无法),我知道这样对于SEO不太好,但也没有去采取措施强制统一两者。

最近,勺子兄燕渡寒潭两位博主都加入了ICDSOFT主机,并使用独立IP和HTTPS SSL加密访问。我想既然使用HTTPS就全站使用吧:把所有HTTP请求强制性重定向为HTTPS。我决定帮助他们设置一下。没想到在土木坛子上使用Google中英文搜索的结果修改.htaccess文件后,无论如何都不行。情急之下询问ICDOSFT客服人员,十分钟不到技术人员就帮我修改好了,只在.htaccess文件里添加了两行规则:

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

看来是将所有HTTP 80端口请求自动跳转成HTTPS(这里的example.com需修改成你的域名)。网上那么多人的方法都不是这样,所以我觉得有必要把它贴到这里,供不是太懂Apache服务器的人参考,总不至于为了添加这么一条规则学习所有的正则表达式和Apache指令。

其实ICDSOFT的客服人员给我修改的规则最后一行里没有301参数,因此只是302临时性转移,对搜索引擎不友好。添加301参数后,就变成了永久性转移——传递原来的权重。此外,将HTTP链接强制301重定向为HTTPS后,点击域名在其它网站留下的HTTP链接也会自动变成HTTPS,有利于用户体验,充分利用好HTTPS保护好访问者的隐私——哪怕TA在你的网站浏览了成人内容也无法被裸奔的网络嗅探。

用HTTPS会有一些与HTTP不一样的地方,需要一点点积累,见招拆招。

19 thoughts on “修改.htaccess强制HTTP重定向为HTTPS链接

  1. chin

    博主,你好!非常喜欢你的很多技术类文章,受益匪浅,非常感谢。
    我现在用godaddy空间遇到个问题,我启用SSL后,按照他们官方的配置方法创建.htaccess文件和重定向代码到HTTPS,上传到网站根目录后访问域名显示500错误(Internal Server Error)。
    我向他们技术人员发了邮件,但他们的各解决方法和他们网站的方法一模一样,根本就没认真看我的问题描述(我估计只看了标题 Can’t automictlly redirecting visitors to HTTPS 就给我回复了)。
    没辙,我就上谷歌搜索,然后就进入了你的这个页面,于是我按照你文章里的设置重写了.htaccess文件,上传上去后依然是500错误。我就百思不得其解了。
    我想知道在使用这段重定向代码前是否还需要设置其他地方?还有这个重定向文件的格式向一下这样写是否正确:

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

    谢谢!

    回复
  2. chin

    godaddy空间确实不支持他官网自己写的http到https配置。可能是他们的软件版本升级,但教程未升级的原因吧。
    我找了一个万能的方法,只要是apache的服务器,任何空间通用:

    
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    

    另外这段配置前后不用添加:

    
     
    ...
     
    
    回复
    1. 土木坛子 文章作者

      感谢分享。
      你自己找到了解决办法就是好事。GODADDY是较专业的域名商,但其主机服务可能并不怎么地。现在的GODADDY的服务比过去好像要差些了,我现在的域名都全面转移到NAMECHEAP和NAMESILO了。

      回复

两天进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注