заголовок (' HTTP/1.1 404 Не Found'); ничего не делает

Попытка перенаправить страницу к моим таможенным 404 ошибочным документам, но напрасно. Вот код

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

Но это остается на той же самой странице даже при том, что информация о заголовке изменяется как требуется

HTTP/1.1 404 Not Found
Date: Wed, 09 Jan 2013 18:10:44 GMT
Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.8

Страница PHP продолжается, и никакое перенаправление не достигается!

2
nl ja de
Покажите нам код, что вы используете для перенаправления.
добавлено автор Salman A, источник
@SalmanA здесь это-: ErrorDocument 404/errors/junk.php
добавлено автор sanchitkhanna26, источник
Так есть ли работа @mario. Как я перенаправляю к своей таможенной странице
добавлено автор sanchitkhanna26, источник
если я использую заголовок ("Местоположение:/errors/junk.php");
добавлено автор sanchitkhanna26, источник
Никакой @Sammitch это находится в другом файле, названном "request.php". Это хорошо работает на вашем конце
добавлено автор sanchitkhanna26, источник
Чувак @RayZ... - то, что заголовок() кодирует в файле/errors/junk.php? Поскольку это кажется, что все работает как ожидалось.
добавлено автор Sammitch, источник
@RayZ ErrorDocument 404 / errors/ junk.php является апачской директивой, и будет только спусковой механизм если апачский can' t находят файл. В то, что вы делаете попытку апача, получает запрос о request.php находят файл, и служит ему. Просто, потому что страница выпускает 404 заголовка самостоятельно doesn' t означают, что апач собирается сделать что-либо. Просто укажите свой браузер на что-то как yoursite.com/klasjdaskdj.php и you' ll видят ваши таможенные 404 страницы.
добавлено автор Sammitch, источник
"Не Найденный" не делает неявный перенаправление. Когда выпущено от PHP это будет просто возвращено к браузеру. Апачи ErrorDocument могут только обращаться с недостающими файлами в его собственной сфере.
добавлено автор mario, источник

4 ответы

Ваша очевидная файловая структура:

/
  .htaccess
  request.php
  ...
  errors/
    junk.php

.htaccess

ErrorDocument 404 /errors/junk.php

request.php

header('HTTP/1.1 404 Not Found', true, 404);
echo "Despite the 404 header this ~file~ actually exists as far as Apache is concerned.";
exit;

errors/junk.php

header('HTTP/1.1 404 Not Found', true, 404);
echo "The file you're looking for ~does not~ exist.";
echo "
" . var_export($_SERVER, TRUE) . "
"; exit;

http://yoursite.com/request.php will show:

Несмотря на 404 заголовка этот ~file ~ на самом деле существует, насколько апач заинтересован.

http://yoursite.com/filethatdoesntexist.php will show:

Файл вы ищете ~does не ~, существует.

[свалка $ _SERVER, который может быть полезным в написании таможенных 404 кодов укладчика]

Если у вас есть файл, который существует, но вы хотите, чтобы он притворился, что это - 404, можно или написать перенаправление в PHP как:

header('Location: http://mysite.com/errors/junk.php');
exit;

Который перенаправит браузер к полному URL, или просто:

include('errors/junk.php');
exit;

Который оставит пользователя в том же самом URL страницы, но представит ваш код ошибки.

2
добавлено

Необходимо просто сделать заголовок ("Местоположение:/errors/junk.php"); , поскольку это по существу, что апач делает с таможенными ошибочными документами, только на уровне сервера вместо в PHP. Я полагаю, что апач использует 301 перенаправление, но я мог быть неправым.

2
добавлено
Да, вы неправы. Апач 3xx перенаправляет, если ошибочный документ указывает на отдаленный URL.
добавлено автор Salman A, источник
@SalmanA, что вы думаете. Если я иду с ' заголовок ("Местоположение:/errors/junk.php"); '
добавлено автор sanchitkhanna26, источник
Я думаю, что лучше пойти с заголовком ("Местоположение:/errors/junk.php"); как ничто иное, работая вокруг. Но спасибо все для вашей помощи
добавлено автор sanchitkhanna26, источник
Хорошо, таким образом, я был неправ относительно апача, использующего 301 для ошибочных страниц, Салман А - правильный it' s только для отдаленных URL. Но я только использовал его в качестве примера того, что продолжается. Необходимо все еще использовать заголовок ("Местоположение:/errors/junk.php");
добавлено автор Kyle, источник
@Kyle Просто задаются вопросом, если you' ре неправильно, почему didn' t вы обновляют ваш вопрос отразить его? Редактирует not' t действительно настолько трудно.
добавлено автор TARDIS Maker, источник

Не используйте 3xx перенаправления для ошибочных страниц. Все, что они делают, путают поисковые системы в размышление, что страница существует в различном местоположении. Можно попробовать этот подход:

header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
require_once("errors/404.php");
die;

Измените ошибочную страницу так, чтобы она могла быть выполнена непосредственно (например, когда апач обрабатывает сами 404 ошибки), или включенный (в ваших сценариях).

Если include_once не является выбором, вы могли бы сделать a:

header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
echo file_get_contents("http://yoursite.com/errors/404.php");
die;

Это действие останется невидимым конечному пользователю.

1
добавлено

При использовании FastCGI, вы не можете послать 404 заголовка ответа

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

Вместо этого необходимо использовать

header('Status: 404 Not Found');

Дополнительно этот заголовок ('Status:...') инструкция не может быть объединена с заголовок ('Location:...') . Таким образом в случае FastCGI следующий код даст правильные 404 кода ответа И перенаправление к таможенным 404 страницам:

header('Status: 404 Not Found');
echo file_get_contents('http://www.yoursite.com/errors/custom404.html');
exit;
1
добавлено
Это имело место для меня на новом osx, устанавливают с 5.6 футами в минуту PHP.Thank You.
добавлено автор Carl Weis, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp