404 ошибка. Как передать серверу?

12 3
ProgMaster
На сайте с 04.04.2006
Offline
86
13716

Стоит следующая задача: если с сайта запрашивается страница вида www.site.ru/detail.php?ID=4, где число 4 - номер раздела на сайте, то надо проверить, существует ли такой номер ID, и если нет, то перенаправить юзера на 404-ю страницу, но не просто страичку, на которой будет написано, что это 404-я страница, и нет такой страницы, а чтобы поисковики тоже понимали, что страница выдает 404-ю, и не индексировали ее. Как это сделать? А именно, как послать роботу 404-ю - остальное реализовано. Т.е. сделана даже переадресация, если введен не верный номер ID.

ewg777
На сайте с 04.06.2007
Offline
225
#1
ProgMaster:
Стоит следующая задача: если с сайта запрашивается страница вида www.site.ru/detail.php?ID=4, где число 4 - номер раздела на сайте, то надо проверить, существует ли такой номер ID, и если нет, то перенаправить юзера на 404-ю страницу, но не просто страичку, на которой будет написано, что это 404-я страница, и нет такой страницы, а чтобы поисковики тоже понимали, что страница выдает 404-ю, и не индексировали ее. Как это сделать? А именно, как послать роботу 404-ю - остальное реализовано. Т.е. сделана даже переадресация, если введен не верный номер ID.

header("HTTP/1.0 404 Not Found");
A
На сайте с 16.11.2008
Offline
12
#2


<?php
header('HTTP/1.1 404 Not Found');
header('Location: /404.html');
exit(); // на всякий случай if(true !== false) :D

UPD: Опоздал =)

UPD2: http://dr.pios.ru/9

Пишу на похапэ (/ru/forum/342374). Аудит скриптов. За деньги. Качественно.
Linkpusher
На сайте с 28.12.2007
Offline
176
#3

header("HTTP/1.0 404 Not Found");

ууу, какие тута все быстрые :)

Точу ножи. Буквально. Есть отзывы. Заказать заточку в МСК и Подольске можно через Телеграмм.
ProgMaster
На сайте с 04.04.2006
Offline
86
#4

Сделал. И пошел регить несуществующую страницу на Яндекс. Он ее скушал и ошибки не написал, а как предполагалось, должен был отказать ее регить (индексировать) (это когда сделал переадресацию с неверным значением ID). Когда добавляешь реально несуществующую - то говорит, что код отличается от 200, и не регит ее.

J
На сайте с 02.02.2009
Offline
53
#5
asserte:

<?php
header('HTTP/1.1 404 Not Found');
header('Location: /404.html');
exit(); // на всякий случай if(true !== false) :D


UPD: Опоздал =)
UPD2: http://dr.pios.ru/9

exit или die делать всё же надо - компиляция продолжится и могут произойти разные вещи.

а вот location делать не стоит - 404 сменится на 302.

ProgMaster
На сайте с 04.04.2006
Offline
86
#6

Вот именно это я и хотел сейчас сказать. Если Location убираю, то при заходе с неверным ID выводится просто ошибка в браузере, и ничего не открывается, и яндекс пишет, что данную страницу зарегить не может. А вот если после передачи 404-й ставить location - то видимо действительно 404-яменяется на 302, и яндекс кушает ее :(. Как же все же быть, чтобы и юзеру и роботу дать нужную инфу: роботу что 404, а юзеру что ошибка, и страницы не сущесвует.

Причем, в htaccess прописано ErrorDocument 404 /404.php.

Т.е. по логике, если возникла на сайте 404-я, то переход на 404.php - и это работает, когда обращаешься к реально несуществующему файлы. А вот когда добавил header('HTTP/1.1 404 Not Found'); - то перехода без header('Location: /404.php'); автоматом не происходит, а просто страница не отображается.

J
На сайте с 02.02.2009
Offline
53
#7

IE имеет свойство не отображать реальные 404-е страницы, подменяя 404ю ошибку своим уведомлением.

В других браузерах показывается?

На будущее: когда делаете Location - отдаётся 302 Moved Temporary, перебивается он только 301-м перед location


header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.ya.ru");
die();
FeoOne
На сайте с 27.12.2008
Offline
32
#8

Фишка вся в том, что код состояния 404, как и 200 может выводить страничку. Поэтому, если страницы не существует просто отсылай в заголовке 404 и пиши что "ничего не найдено".

Например как сделано тут - http://muchmp3.ru/?page=123

Либо можно 302 редиректом перенаправлять на /404.html

wdsg
На сайте с 09.02.2009
Offline
31
#9

ProgMaster, как вариант можно менять выдачу в зависимости от UA. Если робот, шлём 404. Если браузер, 301 или 302 на страницу "документ не найден".

Проектирование и разработка сложных IT-систем. Вожусь с проблемными задачами.
S
На сайте с 28.10.2005
Offline
313
#10
wdsg:
ProgMaster, как вариант можно менять выдачу в зависимости от UA. Если робот, шлём 404. Если браузер, 301 или 302 на страницу "документ не найден".

Коряво по определению )

12 3

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