|
|
|
| как средствами php послать заголовок чтобы апач выдал ошибку 404? | |
|
|
|
|
|
|
|
для: ols
(27.05.2011 в 21:19)
| | Коды Apache перешибут коды PHP, нужно как-то на уровне mod_rewrite делать или других модулей Apache. У вас какая задача? Обязательно 404 должен быть? | |
|
|
|
|
|
|
|
для: ols
(27.05.2011 в 21:19)
| | если надо чтобы ошибку выдал именно Apache то наверное проще всего будет отправить редирект на несуществующую страницу
<?php
header( 'Location: http://site.ru/adreskotorogonet');
?>
|
а если надо просто в браузере показать что страница не найдена то вот так
<?php
header("HTTP/1.x 404 Not Found");
?>
|
| |
|
|
|
|
|
|
|
для: parczynski
(27.05.2011 в 22:52)
| |
Это что ....? | |
|
|
|
|
|
|
|
для: Косорылый
(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 | |
|
|
|
|
|
|
|
для: parczynski
(28.05.2011 в 18:35)
| | Умно...
а вместо этого..использовать ответ сервера
$_SERVER['SERVER_PROTOCOL']
|
религия не позволяет....
кстати заголовки 404 отдаются по другому..... | |
|
|
|
|
|
|
|
для: Косорылый
(28.05.2011 в 21:06)
| | хм, моя религия позволяет многое в том числе писать
header("HTTP/1.x 404 Not Found");
|
вместо
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");
|
когда во втором варианте нет особой потребности
интересно было бы услышать продолжение вашего аргумента "кстати заголовки 404 отдаются по другому....." по-другому это как? по вашему w3c публикует неправильные спецификации http? и почему же тогда кодом, который я привел я получаю желаемый результат (сообщение в браузере 404 ошибки), если я все делаю неправильно. а вообще я не понимаю что вы пытаетесь доказать? и чем вас не устраивает моя религия? | |
|
|
|
|
|
|
|
для: parczynski
(28.05.2011 в 21:55)
| | проверяйте..с вашей религией
то что отдаёте...и (или) + # header ('Status: 404 Not Found');
самое интересное как вы формируете для юзера хтмлом страницу 404 и для неё отправляете заголовки... | |
|
|
|
|
|
|
|
для: Косорылый
(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 для юзера я хтмлом не формирую вовсе. она формируется самим браузером у клиента. | |
|
|
|
|
|
|
|
для: 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
?? | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(31.05.2011 в 13:05)
| | потому что 404 это код о том что страницы нет на сервере, в таком ответе не должно быть контента. соответственно правильно писать просто
<?php
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");
?>
|
| |
|
|
|
|
|
|
|
для: parczynski
(31.05.2011 в 15:27)
| | Логично.. Спс | |
|
|
|