网址http向https以及主域名向www子域名的跳转配置

4 1804
戴举龙 2017-04-13
共发表 5 篇文章

https已经大面积铺开,我也为本网站安装了SSL证书,所以需要将本站的所有url都转到https下访问以实现全站https,并且将主域名的url转到www子域名中访问,毕竟按国内的习惯,都是把www子域名当成主域名和顶级域名来访问的,如:

http://daijulong.com/index.html 跳转到 https://www.daijulong.com/index.html

目前服务器软件使用Apache,在.htaccess文件中增加设置:

#开启Rewrite

RewriteEngine On

#将主域名跳转至www子域名,这里因为有https跳转的需求,故直接跳转到https的url

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

#将非443端口的url请求转发至https

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R=301]

需要注意两处指定301状态,如不明确指定,则默认为302的暂时性转移,不利于SEO,虽然对普通用户没有影响,但从整站运营来看,还是有必要指定为301来集中页面权重的。

附:本站当前的.htaccess文件内容(后端使用Laravel框架开发),仅供参考

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www.daijulong.com [NC]
    RewriteRule ^(.*)$ https://www.daijulong.com/$1 [L,R=301]
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R=301]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
  • Jackie
    2017-05-26 00:15:57

    虚拟主机不支持SSL证书,要怎么弄呢,你是自己建的服务器吗?

    回复
    • 戴举龙
      2017-05-26 15:18:43

      如果是虚拟主机本身不支持的话,确实没什么办法。我这是独立的云主机,可以自己完全配置的。如果确实想用HTTPS的话,可以考虑换支持的虚拟主机或独立云主机。

      回复
      • Jackie
        2017-05-26 22:57:05

        谢谢,只是云主机价格也挺贵的,对于小白来说还是有点贵了

        回复
        • 戴举龙
          2017-05-27 10:39:06

          你可以关注下阿里云,有学生优惠(9.9元/月)和全民云计算活动(30元/月,800元三年),这个价格其实也比较接近虚拟主机了,不妨考虑下

          回复
回复 @abc
登录后才可发表评论 | 登录