2017-03-24 137 views
0

控制器被調用不能與狀態重定向

$this->get('/read/{slug}', \Rib\Src\Apps\Blog\BlogControllers\IndexController::class . ':index'); 

它裏面我想:

return $response->withStatus(404)->withRedirect('/message'); 

return $response->withRedirect('/message', 404); 

,但返回的響應總是有碼200 如何執行404?

+0

嗯它絕對不會在我的情況下工作。我記得嘗試與容器重定向,它的工作。找不到代碼,你知道如何重定向容器嗎? –

回答

1

您無法使用404狀態碼重定向。只有3xx對重定向有效。當瀏覽器收到Location:標題時,它會向給定的url發出新的請求。這意味着您可以重定向到返回404的路線。

$app->get("/test", function ($request, $response, $arguments) { 
    return $response->withRedirect("/message"); 
}); 

$app->get("/message", function ($request, $response, $arguments) { 
    return $response->write("Oh noes!")->withStatus(404); 
}); 

上面的代碼會將您重定向到404狀態碼的響應。

$ curl --include --location http://0.0.0.0:8080/test 

HTTP/1.1 302 Found 
Host: 0.0.0.0:8080 
Date: Sun, 26 Mar 2017 04:53:05 +0000 
Connection: close 
X-Powered-By: PHP/7.1.2 
Content-Type: text/html; charset=UTF-8 
Location: /message 

HTTP/1.1 404 Not Found 
Host: 0.0.0.0:8080 
Date: Sun, 26 Mar 2017 04:53:05 +0000 
Connection: close 
X-Powered-By: PHP/7.1.2 
Content-Type: text/html; charset=UTF-8 

Oh noes!