通过.htaccess实现全站http自动301重定向到https

avatar
avatar
小王先森
385
文章
382
评论
2019年3月14日 评论 471

.htaccess 是Apache服务器下的配置文件,如果你的服务器或者虚拟主机不是Apache环境则不适用此方法。

1、在网站的根目录创建 .htaccess 文件,如果已存在 .htaccess 文件,则直接编辑即可;

2、用编辑器或者记事本打开 .htaccess 文件,在</IfModule>前添加如下语句:

RewriteEngine On
RewriteBase /
Rewritecond %{http_host} ^www.dinphy.wang [nc]
RewriteRule ^(.*)?$ https://dinphy.wang/$1 [R=301,L] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)?$ https://dinphy.wang/$1 [R=301,L]

将以上代码内网址修改为你要重定向的域名即可。此方法是将所有的都重定向到 https://dinphy.wang

也可以添加如下代码,访问 http://www.dinphy.wang 时就强制重定向到 https://www.dinphy.wang,访问 http://dinphy.wang 时就强制重定向到 https://dinphy.wang 。

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

以上两种方式,可以解决全站强制 http 跳转到 https,但是有一个问题,直接访问一个 http 的页面时就会直接跳到首页,不能调到目标页。所以,再次请教了大佬 青衫慧博客 博主萧瑟,在他的帮助下,问题得到解决,再次表示感谢!

其实,就是前面两种方式的变通。有了下面这个,上面的就不需要了。规则写法如下:

<IfModule mod_rewrite.c>
                       RewriteEngine on
                       RewriteCond %{SERVER_PORT} !^443$
                       RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]     
                       RewriteCond %{REQUEST_FILENAME} !-f
                       RewriteCond %{REQUEST_FILENAME} !-d
                       RewriteBase /                  
                       RewriteRule . /index.php [L]
                    </IfModule>
继续阅读
历史上的今天
三月
14
avatar
  • 本文由 发表于 2019年3月14日
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: