Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP: генерация HTTP-кода 404
 
 автор: ols   (27.05.2011 в 21:19)   письмо автору
 
 

как средствами php послать заголовок чтобы апач выдал ошибку 404?

  Ответить  
 
 автор: cheops   (27.05.2011 в 21:24)   письмо автору
 
   для: ols   (27.05.2011 в 21:19)
 

Коды Apache перешибут коды PHP, нужно как-то на уровне mod_rewrite делать или других модулей Apache. У вас какая задача? Обязательно 404 должен быть?

  Ответить  
 
 автор: parczynski   (27.05.2011 в 22:52)   письмо автору
 
   для: ols   (27.05.2011 в 21:19)
 

если надо чтобы ошибку выдал именно Apache то наверное проще всего будет отправить редирект на несуществующую страницу
<?php
header
'Location: http://site.ru/adreskotorogonet');
?>

а если надо просто в браузере показать что страница не найдена то вот так
<?php
    header
("HTTP/1.x 404 Not Found");
?>

  Ответить  
 
 автор: Косорылый   (28.05.2011 в 02:34)   письмо автору
 
   для: parczynski   (27.05.2011 в 22:52)
 

HTTP/1.x

Это что ....?

  Ответить  
 
 автор: parczynski   (28.05.2011 в 18:35)   письмо автору
 
   для: Косорылый   (28.05.2011 в 02:34)
 

это версия протокола
http://www.w3.org/Protocols/rfc2068/rfc2068
6.1 Status-Line

The first line of a Response message is the Status-Line, consisting
of the protocol version followed by a numeric status code and its
associated textual phrase

  Ответить  
 
 автор: Косорылый   (28.05.2011 в 21:06)   письмо автору
 
   для: parczynski   (28.05.2011 в 18:35)
 

Умно...
а вместо этого..использовать ответ сервера
$_SERVER['SERVER_PROTOCOL']

религия не позволяет....
кстати заголовки 404 отдаются по другому.....

  Ответить  
 
 автор: parczynski   (28.05.2011 в 21:55)   письмо автору
 
   для: Косорылый   (28.05.2011 в 21:06)
 

хм, моя религия позволяет многое в том числе писать
 header("HTTP/1.x 404 Not Found");

вместо
 header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");

когда во втором варианте нет особой потребности

интересно было бы услышать продолжение вашего аргумента "кстати заголовки 404 отдаются по другому....." по-другому это как? по вашему w3c публикует неправильные спецификации http? и почему же тогда кодом, который я привел я получаю желаемый результат (сообщение в браузере 404 ошибки), если я все делаю неправильно. а вообще я не понимаю что вы пытаетесь доказать? и чем вас не устраивает моя религия?

  Ответить  
 
 автор: Косорылый   (30.05.2011 в 00:12)   письмо автору
 
   для: parczynski   (28.05.2011 в 21:55)
 

проверяйте..с вашей религией
то что отдаёте...и (или) + # header ('Status: 404 Not Found');
самое интересное как вы формируете для юзера хтмлом страницу 404 и для неё отправляете заголовки...

  Ответить  
 
 автор: parczynski   (31.05.2011 в 02:09)   письмо автору
 
   для: Косорылый   (30.05.2011 в 00:12)
 

1 ) я как раз таки проверяю что отдаю. результат моего header("HTTP/1.x 404 Not Found"); вот такие заголовки:
HTTP/1.1 404 Not Found
Server: nginx/1.0.2
Date: Mon, 30 May 2011 22:02:50 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Powered-By: PHP/5.2.10

и соответственно сообщение что страница не найдена в браузере. не поленился и проверил ваше header ('Status: 404 Not Found'); получил такие заголовки:
HTTP/1.1 200 OK
Server: nginx/1.0.2
Date: Mon, 30 May 2011 22:03:58 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Powered-By: PHP/5.2.10
Status: 404 Not Found 

и соответственно белую страницу в браузере. что логично ведь браузер читает в первой строке код 200, и в дальнейшем ему плевать на ваше Status: 404 Not Found. О чем кстати и писал cheops "Коды Apache перешибут коды PHP"
2) самое интересное что страницу 404 для юзера я хтмлом не формирую вовсе. она формируется самим браузером у клиента.

  Ответить  
 
 автор: Гавриленко Дмитрий   (31.05.2011 в 13:05)   письмо автору
 
   для: parczynski   (31.05.2011 в 02:09)
 

А почему у меня при выполнения кода

 <?php  header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");
  
var_dump(headers_list());
 
?> 

Я получаю
array(1) { [0]=> string(23) "X-Powered-By: PHP/5.2.9" }

А где
HTTP/1.1 404 Not Found
Server: nginx/1.0.2
Date: Mon, 30 May 2011 22:02:50 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
??

  Ответить  
 
 автор: parczynski   (31.05.2011 в 15:27)   письмо автору
 
   для: Гавриленко Дмитрий   (31.05.2011 в 13:05)
 

потому что 404 это код о том что страницы нет на сервере, в таком ответе не должно быть контента. соответственно правильно писать просто
 <?php 
header
($_SERVER['SERVER_PROTOCOL']." 404 Not Found"); 
 
?> 

  Ответить  
 
 автор: Гавриленко Дмитрий   (31.05.2011 в 18:17)   письмо автору
 
   для: parczynski   (31.05.2011 в 15:27)
 

Логично.. Спс

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования