Yii通过preload组件,使得https跳转到http

之前文章有涉及到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啦。

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*