header ('HTTP / 1.0 404 Not Found'); ничего не делая

У меня есть файл 404.php в основном каталоге моего сайта, и я использовал header('Location: 404.php'); какое-то время, пока кто-то не сказал, что вы должны использовать header('HTTP/1.0 404 Not Found'); вместо. Поэтому я заменил его на это, а затем добавил: ErrorDocument 404 /404.php в мой конфигурационный файл apache и перезапустил сервер, но он не работает.

Я пробовал разные варианты, включая ErrorDocument 404 404.php и ErrorDocument 404 mywebite/404.php но безрезультатно.

То, что я имею в виду, не работает, так это при использовании header('Location: 404.php'); он перенаправляет файл 404.php, но когда я заменю его header('HTTP/1.0 404 Not Found'); кажется, просто пропустить линию и ничего не делать. Это, безусловно, не перенаправление. Причина, по которой я вызываю перенаправление, состоит в том, что если значение заголовка $ _GET не распознается, страница должна быть 404.

    Нет, он, вероятно, работает. Это просто не видно. Вместо того, чтобы просто использовать вызов header , попробуйте сделать это, а затем включите 404.php , а затем 404.php die .

    Вы можете проверить факт, что HTTP/1.0 404 Not Found работает, создав файл PHP с именем, скажем, test.php с этим контентом:

     <?php header("HTTP/1.0 404 Not Found"); echo "PHP continues.\n"; die(); echo "Not after a die, however.\n"; 

    Затем просмотр результата с помощью curl -D /dev/stdout показывает:

     HTTP/1.0 404 Not Found Date: Mon, 04 Apr 2011 03:39:06 GMT Server: Apache X-Powered-By: PHP/5.3.2 Content-Length: 14 Connection: close Content-Type: text/html PHP continues. 

    Вы можете попробовать указать код ответа HTTP с помощью необязательного параметра :

     header('HTTP/1.0 404 Not Found', true, 404); 

    Использовать эти коды для 404 не удалось.

     if(strstr($_SERVER['REQUEST_URI'],'index.php')){ header('HTTP/1.0 404 Not Found'); readfile('404missing.html'); exit(); } 

    Здесь 404missing.html – это не найденная страница дизайна. (это может быть .html или .php)

    я думаю, это поможет вам

    содержимое .htaccess

    ErrorDocument 404 /error.php
    ErrorDocument 400 /error.php
    ErrorDocument 401 /error.php
    ErrorDocument 403 /error.php
    ErrorDocument 405 /error.php
    ErrorDocument 406 /error.php
    ErrorDocument 409 /error.php
    ErrorDocument 413 /error.php
    ErrorDocument 414 /error.php
    ErrorDocument 500 /error.php
    ErrorDocument 501 /error.php

    error.php и .htaccess должны быть помещены в один и тот же каталог [в этом случае]

    Другая причина может заключаться в том, что вы добавляете любой html-тег перед этим перенаправлением. Посмотрите внимательно, вы можете оставить DOCTYPE или любой комментарий html перед этой строкой.

    После написания

     header('HTTP/1.0 404 Not Found'); 

    добавьте еще один заголовок для любой существующей страницы вашего сайта. Это работает, конечно.

     header("Location: http://yoursite/nowhere"); die;