之前文章有涉及到http跳转到https的nginx跳转,这里是它的相反操作。
有时候网站并没有对https访问做到很好的支持,所以要让某些https的链接跳转到http.
对于Yii框架,可以利用preload这个组件,每次进入网站前先判断是否https安全链接,如果是安全链接则直接301跳转到相应的http页面。
一 配置config
'components' => array( 'httpsRedirect' => array( 'class' => 'HttpsRedirect', ), ), 'preload' => array( 'httpsRedirect', )
二 添加HttpsRedirect类
<?php /* * PC站https redirect * 请求到PC站的https 暂时301跳转到http */ class HttpsRedirect extends CComponent { public function init() { $request = Yii::app()->getRequest(); if ($request->getIsSecureConnection() == false) { return; } $host = $_SERVER['HTTP_HOST']; $uri = $request->requestUri; switch($host) { case 'your pass host': $flag = true; break; case 'your pass host': $flag = true; break; case 'your pass host': $flag = true; break; case 'your pass host': $flag = true; break; default: $flag = false; } if($flag) { Header("HTTP/1.1 301 Moved Permanently"); Header("Location: http://{$host}{$uri}"); } } }
这样就在php代码层面做到简单的https跳转到http啦。