【问题标题】:ERR_TOO_MANY_REDIRECTS when use catchAll in yii2在 yii2 中使用 catchAll 时出现 ERR_TOO_MANY_REDIRECTS
【发布时间】:2018-04-03 04:40:06
【问题描述】:

我正在使用 yii2 高级版 2.0.15。
操作系统:赢得 10

在 common/config/main.php 中,当我尝试使用 catchAll 时,我会收到 ERR_TOO_MANY_REDIRECTS 错误

    'catchAll'=>[
    'site/offline'
]

站点控制器:

public function actionOffline()
{
    return $this->render('offline');
}

为什么会这样?


更新:

当我使用另一个控制器而不是 SiteController 时,它可以正常工作。
为什么它在站点控制器上不起作用?!

【问题讨论】:

  • “工作正常”意味着它显示“离线”页面? YII_DEBUG 关闭了吗?
  • 你能分享你对 common/config/main.phpfrontend/config/main.php 的完整配置,还可以为 behavior() 添加 behavior() 方法**SiteController**
  • @ldg 是的。 YII_DEBUG 开启,YII_ENV 开发
  • 在没有调试模式的情况下试一试,catchAll 可能导致问题的文档说明。
  • @MuhammadOmerAslam 它是 yii2 高级版,没有任何更改,我在后端执行此操作(仅用于测试)。 - pasted.co/e48cda28 - pasted.co/ce938723 - pasted.co/057614e3

标签: yii2


【解决方案1】:

原因可能是您的AccessControl 行为规则。 offline 动作没有allow 规则,因此用户被重定向到login 动作,被catchAll 捕获并再次重定向。将您的第一条规则更改为:

[
    'actions' => ['login', 'error', 'offline'], 
    'allow' => true,
],

【讨论】:

  • 这是不正确的,如果不允许,它将抛出 403 Forbidden 而不是 ERR_TOO_MANY_REDIRECTS,并且当指定 catchAll 时,除了指定的操作之外,每个请求都被重定向到。它不会走你说的这条路
  • 403 仅针对登录用户抛出 - 访客将被重定向到登录页面:github.com/yiisoft/yii2/blob/…github.com/yiisoft/yii2/blob/…
猜你喜欢
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
相关资源
最近更新 更多