如何重定向到无效的页面,如果错误的URL或错误的控制器/操作在Yii


How to redirect to Invalid page if wrong URL or wrong controller/action in Yii?

如果用户试图在URL中键入控制器中不存在的操作,我如何重定向到或在我的网站中呈现无效页面?我想要一个共同的代码,因为我在网站上有很多控制器,这样,如果一个用户类型的行动是错误的或不存在将重定向到页面说"你丢失或请求页面没有找到"?

当涉及到控制器和操作时,如果你的URL管理器配置正确设置,Yii将自动执行此操作。

在config/main.php中,在urlmanager部分:

'urlManager'=>array(
    'showScriptName' => false,
    'urlFormat'=>'path',
    'useStrictParsing'=>true,
    'rules'=>array(
         // Remove all the default Yii rules
         // Add your own specific rules
    ),
),

这里有几点:

  • 我假设你使用干净的url从以下教程
  • useStrictParsing防止Yii在尝试匹配url时过于慷慨
  • 删除Yii的默认通用控制器:动作路由规则意味着你的应用中没有不指定的方法。

如果你正在谈论在Controller Action中抛出错误,你可以使用Yii的CException类(es)。

public function actionCheckOk()
{
    if($ok)
    {
        $this->render('ok');
    }
    else
    {
        throw new CHttpException(404, 'Page not found');
    }
}