文章索引目录
这里实际上说的是种6跳转:http跳转到https,https跳转到http,所有访问均跳转到带www的https,所有访问均跳转到不带www的https,所有访问均跳转到带www的http,所有访问均跳转到不带www的http。
Http请求跳转到Https
这是目前最需要普及的问题,很多站点已经部署了SSL证书,但http请求依旧能够打开页面并且不会跳转到https,如果关闭了80端口的http访问,那么以前的书签中的链接由于无法连接到网站80端口那就完全不能打开了。在网站根目录中的.htaccess文件(没有就创建一个)中,将规则修改成下方的文本即可,注意将规则中的域名链接都换成你自己站点的链接。
原理:访问80端口http链接,全部定向到https://www.iyunhost.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} ^www.iyunhost.com$ [NC]
RewriteRule ^(.*)$ https://www.iyunhost.com/$1 [L,R=301]
</IfModule>
Https请求跳转到Http
原理:访问443端口https链接,全部重定向到http://www.iyunhost.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^www.iyunhost.com$ [NC]
RewriteRule ^(.*)$ http://www.iyunhost.com/$1 [L,R=301]
</IfModule>
★★★重要:所有访问均跳转到带www的https
第一个跳转中,仅仅指定了访问80端口的链接时,重定向到https://www.iyunhost.com,但访问https://iyunhost.com,不会跳转到带www的https,下面我们就通过对443端口访问的重定向来设置所有访问均跳转到带www的https。
原理:访问80端口,所有http链接重定向到https://www.iyunhost.com,访问443端口,https不带www的链接全部跳转到带www的链接。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.iyunhost.com/$1 [R=301,L]
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^iyunhost.com$ [NC]
RewriteRule ^(.*)$ https://www.iyunhost.com/$1 [L,R=301]
</IfModule>
所有访问均跳转到不带www的https
简单的修改上方的规则即可,重定向的链接全部不带www。
原理:访问80端口,所有http链接重定向到https://iyunhost.com,访问443端口,https带www的链接全部跳转到不带www的链接。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://iyunhost.com/$1 [R=301,L]
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^www.iyunhost.com$ [NC]
RewriteRule ^(.*)$ https://iyunhost.com/$1 [L,R=301]
</IfModule>
所有访问均跳转到带www的http
动动你的脑子想一想,想不出来网上也找不到了。
所有访问均跳转到不带www的http
动动你的脑子想一想,想不出来网上也找不到了。