Отображение страницы Not Found и отправка кода 404

Xeon303

Новичок
Отображение страницы Not Found и отправка кода 404

Столкнулся с такой проблемой:

Нужно средствами PHP выдать пользователю 404-ую ошибку "Not Found" и вывести при этом страницу сгенерированную через PHP. В Апаче я понимаю - там сервер отправляет 404 код клиенту и выводит строго определенную страницу с сервера.

Допустим, на серваке лежит скрипт index.php, который может принимать параметры, которые определяют выводимую страницу.

Например, index.php?id=2135

Допустим, если пользователь ввел неверный ID, то система должна выдать ошибку 404 и отобразить страницу.

Я делал так:

PHP:
header("HTTP/1.0 404 Not Found");
print "Страница, которую вы запрашиваете, не существует!";
Вроде, все работает: PHP отправляет хедер со статусом 404, добавлет строку "Страница, которую вы запрашиваете, не существует!".
Когда я вводил адрес с неправильным ID в броузере Opera, то сервер возвращал код 404 и выводил мое сообщение, но когда я делал то же самое в Internet Explorer, то сервер сообщал 404 код, а страницу с ошибкой Internet Explorer выдавал свою:

Невозможно найти страницу Возможно, эта страница была удалена, переименована, или она временно недоступна...
В чем причина этому - я не пойму. Может быть я header не тот отправляю? Когда Апач выводит страницу с ошибкой, то все нормально IE отображает не свою страницу, а ту, которую ему дает Апач. А в моем случае IE вставляет свою страницу!

Подскажите пожалуйста, заранее благодарен.

P.S. Если не знаете, то может быть посоветуете какую-нибудь программу с помощью которой можно отсылать запросы к серверу и просматиривать его ответ (шапки). Только telnet, пожалуйста, не предлагать, потому что я с ним уже намучался.

Я слышал, что че-то подобное есть... Хотелось бы сравнить ответы сервера при ошибке 404: ответ моего скрипта и Апача.
 

Steamroller

Новичок
Причина наверно в настройках Эксплорера.
Сервис -> Свойства обозревателя -> Дополнительно -> Выводить подробные сообщения об ошибках http

P.S. Если не знаете, то может быть посоветуете какую-нибудь программу с помощью которой можно отсылать запросы к серверу и просматиривать его ответ (шапки). Только telnet, пожалуйста, не предлагать, потому что я с ним уже намучался.
webbug
если только просматривать - livehttpheaders для firefox.
 

Xeon303

Новичок
Врят ли это в настройках броузера дело, потому что при стандартной обработке ошибок Апачем, IE все нормально отображает. Скорее всего это от HTTP-заголовков в ответе зависит...
 

Xeon303

Новичок
Спасибо тем кто, ответил, причину я нашел сам. Причина тому, что Internet Explorer выводит свою страницу с сообщением об ошибке очень даже интересная. Во всяком случае, я такого даже предположить не мог.

Дело в том, что Internet Explorer ставит свою страницу с ошибкой, если результат (ответ сервера) меньше 524 байт. Я в это сам сначала не поверил… Размер ответного результата я смотрел по access-логу сервера Apache:

"GET /error.php?id=34 HTTP/1.1" 404_524

Цифра 524 в конце записи. Стоит только убрать два символа из страницы и IE выводит свою страницу с ошибкой. Лог выглядит так:

"GET /error.php?id=34 HTTP/1.1" 404_522

Сначала искал ошибку в HTTP-ответе сервера, но ответ полностью совпадал со стандартным ответом сервера Apache, когда 404-ый статус выдается не с помощью функции header() в PHP, а обрабатывается самим сервером.

Другой причины тому, что IE выдает свою собственную страницу с ошибкой — нет, я это проверял. Все настройки IE стоят по умолчанию, за исключением тех, которые не могут повлиять на такое поведение IE. Может быть, это еще зависит от версии Internet Explorer’а.

У меня установлен такой:

Версия 6.0.2900.2180.xssp_sp2_rtm.040803-2158
Установлен SP2


Вот уж, не предполагал ход мыслей разработчиков Майкрософта :). Чем интересно они руководствовались, когда делали IE и почему ограничение именно в 524 байта?
 

SiMM

Новичок
> Internet Explorer ставит свою страницу с ошибкой, если результат (ответ сервера) меньше ...
Именно это и написано по ссылке, которую тебе дал sage
 

DEEX

Guest
ааа подождите... у меня такаяже проблема... купл себе хостинг и домен и некак немогу раздуплить....

"Цифра 524 в конце записи. Стоит только убрать два символа из страницы и IE выводит свою страницу с ошибкой"... это как убрать... я что-то непойму...
 
Сверху