Отдается 404, а в логах 302. Как исправить?

Neformat
На сайте с 25.04.2006
Offline
58
1233

Динамические страницы, контент выводится из БД в соответствии с "?docID=XXX" в УРЛе. Скрипт, не найдя в базе документа с ID равным ХХХ, выдает "HTTP/1.1 404 Not Found", а затем "Location: морда". Браузеры реагирую так, как задумано. Но в логах видно, что при запросе поисковиками (Вебальта, Рамблер) страниц с удаленным контентом они получают 302 вместо 404. Подозреваю, что это нехорошо для индексации. Если подозрения не беспочвенны, то где собака порылась и как решается проблема?

AM
На сайте с 04.11.2003
Offline
57
#1

для 404 завести дефолтную страницу и выдавать ее вместо редиректа

MVH
На сайте с 03.05.2005
Offline
64
MVH
#2
Neformat:
Динамические страницы, контент выводится из БД в соответствии с "?docID=XXX" в УРЛе. Скрипт, не найдя в базе документа с ID равным ХХХ, выдает "HTTP/1.1 404 Not Found", а затем "Location: морда".

Вы немного не допонили как работает php. Объясняю: сначала Вы посылаете 404 заголовок (НО он ещё не отправился клиенту, т.к. вывод страницы не начался). Затем Вы посылаете заголовок Location, который неявно посылает 302 код, который затирает 404. И в итоге клиент получает в ответ 302 заголовок, а затем запрашивает новую страницу, указанную в location.

Вам, что бы добиться желаемого эффекта, надо сделать следующее: послать 404 заголовок и выдать нужную страницу (морду), а не перенаправлять на неё.

Т.е. вроде следующего:


<?php
header('HTTP/1.1 404 Not Found');
print file_get_contents('index.html');
//или вот так, если страниц генерируется скриптом:
print file_get_contents('http://' . $_SERVER['HTTP_HOST'] . '/index.php');

?>
Neformat
На сайте с 25.04.2006
Offline
58
#3

Arty.M, благодарю за отклик, об этом способе я знаю, но вариант, предложенный MVH, мне кажется гибче.

MVH, спасибо, так и сделал.

K
На сайте с 20.12.2004
Offline
62
#4

Сорри за оффтоп, но тут спор с сотрудником возник.

Он утверждает, что поисковики, встретив 404 в заголовке страницы вида:

http://host/script.php?id=123

удаляют из индекса не только эту данную страницу с id равным 123, но и вообще все страницы, начинающиеся на http://host/script.php , т.е. с любыми параметрами.

Я же категорически с этим не согласен на основании собственного опыта и прочитанного ранее.

Жаль только, сейчас не получается нормальной ссылочки найти.

Кто из нас прав?

И как доказать правоту?

Лучше день потерять, а потом за пять минут долететь (c (http://andrey.lviv.ua/)) м/ф "Крылья, ноги, хвост"

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий