最新消息:把Logo换了一下,虽然丑了点,但至少完全是自己的设计

用mod_rewrite实现HTTP和HTTPS之间的强制转换

Apache 宇托 742浏览 暂无评论

最近现在用的空间更新了,支持SNI了,于是试了试HTTPS。在安装好KEY之后,发现Wordpress不会自动把所有请求自动转到HTTPS。在网上找了一下,发现可以使用Apache的mod_rewrite来实现强制使用HTTPS。

mod_rewrite的判断方法有很多,我个人觉得用来判断HTTPS和HTTP的最好方法是端口或者HTTPS是否开启的标记。

即下面的代码

Apache
# HTTP,80端口
RewriteCond %{SERVER_PORT} ^80$
# HTTPS,443端口
RewriteCond %{SERVER_PORT} ^443$

# HTTP,HTTPS不是ON
RewriteCond %{HTTPS} !=on
# HTTPS,HTTPS是ON
RewriteCond %{HTTPS} =on

HTTP到HTTPS的重定向

根据上面的判断语句,我们可以在.htaccess文件的最前面加上下面的代码,就可以实现HTTP到HTTPS的重定向。(判断语句可以根据自己的喜好来选择,我选择的是RewriteCond %{SERVER_PORT} ^80$,转向地址部分请修改为自己的转向地址)。

Apache
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{SERVER_PORT} ^80$
  RewriteRule ^(.*)$ https://yutuo.net/$1 [R=301,L]
</IfModule>

HTTPS到HTTP的重定向

同样的原理,当想把HTTPS重定向到HTTP时,可以在.htaccess文件的最前面加上下面的代码。(判断语句可以根据自己的喜好来选择,我选择的是RewriteCond %{SERVER_PORT} ^443$,转向地址部分请修改为自己的转向地址)。

Apache
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{SERVER_PORT} ^443$
  RewriteRule ^(.*)$ http://yutuo.net/$1 [R=301,L]
</IfModule>

参考地址:
htaccess HTTPS / SSL Tips, Tricks, and Hacks
Force HTTPS on certain URLs and force HTTP for all others

转载请注明:宇托的狗窝 » 用mod_rewrite实现HTTP和HTTPS之间的强制转换

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址