我有一個代碼,它應該重定向,以防它沒有正確設置一些請求參數。使用404重定向不起作用
if(!is_numeric($_GET['id'])){
header("HTTP/1.0 404 Not Found");
header('Location: '.$url);
exit();
}
問題是,每當我檢查Firefoxes插件,活HTTP標頭,我看到302臨時重定向。這是爲什麼?爲什麼沒有404響應?
我有一個代碼,它應該重定向,以防它沒有正確設置一些請求參數。使用404重定向不起作用
if(!is_numeric($_GET['id'])){
header("HTTP/1.0 404 Not Found");
header('Location: '.$url);
exit();
}
問題是,每當我檢查Firefoxes插件,活HTTP標頭,我看到302臨時重定向。這是爲什麼?爲什麼沒有404響應?
問題是,只要我用Firefoxes插件檢查,現場HTTP HTTP 標題,我看到302臨時重定向。這是爲什麼?爲什麼沒有給出404 響應?
不知道你想在這裏做什麼但以下將提供您的目的。
if (! is_numeric($_GET['id'])) {
header('Location: ' . $url, true, 404);
exit();
}
用404
狀態碼發送Location
標題是沒有意義的。
Location
表示「是在這裏你要的」
404
的意思是「我沒有問你什麼」
這兩種說法是不兼容的。
如果您想發送一個特定的人類可讀的錯誤說明,那麼就像輸出任何其他類型的文檔一樣輸出它。你可以include()
它,如果你喜歡。不要嘗試重定向到它。
如果我使用的位置,它給了我302狀態碼..所以我需要將它與404結合。我知道我可以使用包括..有點什麼我使用..我想要的是產生一個狀態碼。並在同一時間更改網址或許 –
@DmitryMakovetskiyd - 它是如何找不到的東西和其他地方在同一時間? – Quentin
當我改變一個位置..新的URL是由服務器獲得並通過htaccess。在htaccess中,它轉到另一個重定向302,以轉到目標頁面。這就是爲什麼當我第一次將頭部集合提交爲404時,當涉及到htaccess時,它將覆蓋404頭部重定向以及它自己的302重定向。這就是爲什麼我結束了302重定向而不是404重定向 –
如上所述,您只能發送您嘗試的其中一個標頭。
在404的情況下 - 這將顯示錯誤相關錯誤頁面,如您所定義的Web服務器配置。
要做你想做的事......你將需要修改服務器的404從一個普通的HTML到一個PHP頁面,並找出從那裏顯示什麼(你可以基於引用等)。
從'動態'404頁面中,您可以根據需要重定向。
它沒有做重定向..它只是扔了404 ..爲什麼 –
您可以重定向(狀態碼302)或未找到(狀態碼404),但不能同時存在。 –
嗯..所以你說的是我做了302重定向..雖然.....可能我可以簡單地重定向,然後扔404與htaccess ..但我不認爲它會工作 –