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

Форум PHP

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

 

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

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

тема: заголовок HTTP/1.1 404 Not Found отправляемый php
 
 автор: Flok   (19.11.2009 в 21:51)   письмо автору
 
 

имеется файл

<?
header
('HTTP/1.1 404 Not Found');
?>


при обращении к нему возвращаются заголовки

Array
(
    [0] => HTTP/1.1 404 Not Found
    [1] => Date: Thu, 19 Nov 2009 18:47:29 GMT
    [2] => Server: Apache/2.0.61 (Unix) mod_ssl/2.0.61 OpenSSL/0.9.8g mod_dp20/0.99.2 mod_python/3.3.1 Python/2.5.1 mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24)
    [3] => Content-Length: 0
    [4] => Content-Type: text/html
)


при обращении к несуществующему файлу возвращаются
Array
(
    [0] => HTTP/1.1 404 Not Found
    [1] => Date: Thu, 19 Nov 2009 18:47:29 GMT
    [2] => Server: Apache/2.0.61 (Unix) mod_ssl/2.0.61 OpenSSL/0.9.8g mod_dp20/0.99.2 mod_python/3.3.1 Python/2.5.1 mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24)
    [3] => Set-Cookie: PHPSESSID=1tko6j6gqfuk02bm33aht91m76; path=/
    [4] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
    [5] => Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    [6] => Pragma: no-cache
    [7] => Content-Length: 4422
    [8] => Connection: close
    [9] => Content-Type: text/html
)


но почему во втором случае выдаётся страница error404.htm, прописанная мною в .htaccess, а в первом случае не выдаётся ничего, пустая страница? как заставить сервер в первом случае показать страницу с ошибкой?

для поисковых ботов это не принципиально, а вот для пользователей пустая страница - плохой знак )

  Ответить  
 
 автор: neadekvat   (19.11.2009 в 22:31)   письмо автору
 
   для: Flok   (19.11.2009 в 21:51)
 

А зачем вы вообще отправляете такой заголовок, если файл существует, я не понимаю.

  Ответить  
 
 автор: Flok   (19.11.2009 в 22:50)   письмо автору
 
   для: neadekvat   (19.11.2009 в 22:31)
 

у меня адрес страницы вида http://www.домен.ru/html-14
модреврайтом превращается всё в /view.php?rub=html&id=14

дело в том, что если кто-кто оставит на своём сайте ссылку вида http://www.домен.ru/dfhuwheqb , то скрипт view.php должен вывести ошибку, что такой переменной rub в базе нет. Для человека реализация проста, вывести ошибку через echo, да закончить работу скрипта. А для поисковых машин требуется отослать 404 ошибку, иначе эта мусорная страница "/dfhuwheqb" проиндексируется, что не есть хорошо для оптимизации сайта в целом. Не хочу делить скрипт на разветвления по UA, что для поисковых ботов 404 + пустая страница, а для людей 200 + страница с текстом ошибки. я хочу, чтобы в таких случаях и человеку и машине было одинаково понятно, что страницы нет.

вот и требуется, чтобы сервер сделал вид, что он ничего не нашел.

  Ответить  
 
 автор: neadekvat   (19.11.2009 в 22:54)   письмо автору
 
   для: Flok   (19.11.2009 в 22:50)
 

Да бросьте.
Вы ненужные телодвижения делаете.
1. Кому нафиг нужно ставить ссылку на заведомо несуществующую страницу.
2. По какому такому запросу поисковик должен выдать в результатах ссылку на эту несуществующую страницу?
Не мучайте себе моск, выводите в своем дизайне на месте, где выводится страница, что такой не существует.

  Ответить  
 
 автор: Flok   (19.11.2009 в 23:02)   письмо автору
 
   для: neadekvat   (19.11.2009 в 22:54)
 

и всё же вопрос состоит не в этом, и я хочу помучать себе мозг. Кроме того, для самообразования хочется узнать, почему не выводится страница с ошибкой, когда вызываю ошибку искусственно.

1. заведомоложные врятли поставят, а устаревшие - вполне может быть. и от их индексации надо избавляться
2. хороший вопрос, но, увы, ответа дать не могу)

  Ответить  
 
 автор: neadekvat   (19.11.2009 в 23:19)   письмо автору
 
   для: Flok   (19.11.2009 в 23:02)
 

Ну смотрите: вы создали страницы. Пусть на неё поставили страницы и даже проиндексировали.
Вы удалили страницу.
Теперь если на неё придут - то увидят ошибку "Страницы не существует". Пусть вас еще раз индексирует поисковик - теперь там уже _другой_ текст - текст ошибки. Теперь на эту страницу с поисковика попасть - малоевроятно.

А почему не работает - потому что страница ошибки показывается на уровне apache, а вы работаете на уровне php.

  Ответить  
 
 автор: Flok   (19.11.2009 в 23:26)   письмо автору
 
   для: neadekvat   (19.11.2009 в 23:19)
 

а как тогда на уровне php реализовать то, что реализуется на уровне apache ?

  Ответить  
 
 автор: neadekvat   (19.11.2009 в 23:35)   письмо автору
 
   для: Flok   (19.11.2009 в 23:26)
 

Ну, проводите проверку на существование страницы до того, как пойдет содержимое
И если не существует - header("location: error_404.html");
естессно надо создать $error_404.html
Но никаких заголовков об ошибке не будет, конечно.
Да когда на уровне apache делается, по-моему, такого заголовка тоже нет. Заголовок об ошибке отдается только когда у вас ничего на этот случай не заготовлено и не сделано

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

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