.htaccess设置http跳转到https与相互跳转/www与不带www相互跳转

百度已收录,点击一下,找找看!
文章索引目录

这里实际上说的是种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

动动你的脑子想一想,想不出来网上也找不到了。

原文链接:,转发请注明来源!

发表回复

要发表评论,您必须先登录