对于CakePHP错误,我知道存在CakeError和AppError解决方案。
但是我需要在 Controller 内进行重定向。

AppController 中,存在:

function afterFilter() {
    if ($this->response->statusCode() == '404')
    {
        $this->redirect(array(
            'controller' => 'mycontroller',
            'action' => 'error', 404),404
        );
    }
}

但这不会创建404状态代码。它创建一个302代码。
我将代码更改为此:
$this->redirect('/mycontroller/error/404', 404);

但是结果是一样的。

我添加了这个,它不起作用也被弃用了:
$this->header('http/1.0 404 not found');

如何在 Controller 重定向内发送404代码?

最佳答案

如果要返回404错误,请使用内置的CakeError支持:

throw new NotFoundException();

您可以从 Controller 抛出此异常,并且该异常应生成404响应。

还有更多内置异常here

如果您对制作自定义错误页面感兴趣,请参阅this post

否则,我认为不可能返回404 header 代码并仍然重定向。 Http指定重定向状态代码到be in the 300s,这是CakePHP遵循的约定。

关于php - CakePHP重定向,状态码为404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11268849/

10-16 14:46