在Yii中重定向到登录页面时出现软404错误

时间:2016-01-21 11:11:11

标签: php yii google-webmaster-tools

我正在使用Yii 1.1.17,我注意到在我的一些网页上,我希望只有注册用户能够查看我在Google的网站管理员工具上遇到软404错误。

例如

http://www.example.com/sell/当您转到http://www.example.com/sell/view时,它会将您重定向到http://www.example.com/login

现在我只有240个软404错误。视图操作最初仅设置为注册用户。但是在启动我的网站几个月后。我改变了然后错误开始弹出。

有没有办法解决这个问题?或解决方法?

这里是view操作的accessRules,仅适用于注册用户:

public function accessRules()
    {
        return array(
            array('allow',  
                'actions'=>array('index', 'new'),
                'users'=>array('*'),
            ),
            array('allow',
                'actions'=>array('view'),
                'users'=>array('@'),
            ),
            array('allow',
                'actions'=>array('admin','delete', 'update', 'create','update','upload'),
                'expression'=>'app()->user->isAdmin()',
            ),
            array('deny', 
                'users'=>array('*'),
            ),
        );
    }

3 个答案:

答案 0 :(得分:1)

您可以添加deniedCallback作为

public function accessRules()
    {
        return array(
            array('allow',  
                'actions'=>array('index', 'new'),
                'users'=>array('*'),
                'deniedCallback' => array($this, 'redirectToLogin'), 
            ),
            array('allow',
                'actions'=>array('view'),
                'users'=>array('@'),
                'deniedCallback' => array($this, 'redirectToLogin'), 
            ),
            array('allow',
                'actions'=>array('admin','delete', 'update', 'create','update','upload'),
                'expression'=>'app()->user->isAdmin()',
                'deniedCallback' => array($this, 'redirectToLogin'), 
            ),
            array('deny', 
                'users'=>array('*'),
                'deniedCallback' => array($this, 'redirectToLogin'), 
            ),
        );
    }

    public function redirectToLogin($user = null, $rule = null){
        Yii::app()->controller->redirect('/login', true, 403);
    }

然后,您可以使用您喜欢的任何状态代码重定向。

您可以详细了解deniedCallback here

详细了解redirect here

答案 1 :(得分:0)

以简单的方式,您只需要向控制器识别它。如果不是用户登录,则会自动进入登录页面。如下例所示:

np.random.random

希望可以提供帮助

答案 2 :(得分:0)

您只是将dbmanager / rbac库嵌入到您的yii应用程序中,

http://www.yiiframework.com/doc-2.0/yii-rbac-dbmanager.html