CakePHP redirect with status code 404
cakephp, cakephp-2.0, http-status-code-404, php, redirect
Solution
If you want to return a 404 error, use the built in CakeError support for it:
throw new NotFoundException();
You can throw this exception from your controller and it should generate a 404 response.
There are more built-in exceptions here.
If you are interested in making a custom error page, then see this post.
Otherwise, I don't think it is possible to return a 404 header code and still redirect. Http specifies redirect status codes to be in the 300s, and this is the convention CakePHP follows.
Problem
For CakePHP errors I know that there exists CakeError and AppError solutions. But I need to make a redirection within controller. In AppController there exists: ``` function afterFilter() { if ($this->response->statusCode() == '404') { $this->redirect(array( 'controller' => 'mycontroller', 'action' => 'error', 404),404 ); } } ``` But this doesn't create a 404 status code. It creates a 302 code. I changed code to this: ``` $this->redirect('/mycontroller/error/404', 404); ``` But the result is same. I added this, it didn't work also deprecated: ``` $this->header('http/1.0 404 not found'); ``` How can I send a 404 code within controller redirect ?