404-й редирект

Lord Maverik
На сайте с 15.04.2003
Offline
471
1001

Я скриптом определяю, что была запрошена несуществующая страница.

В этом случае делаю

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

и прекращаю работу скрипта.

А если я добавлю после этой строки

header("Location: http://moidomen/index404.php");

чтобы юзер увидел сообщение об ошибке в таком виде, как я этого хочу.

Как отнесуться к этому ПС, нормально?

RedMall.Ru (https://redmall.ru) - Товары из Китая (Таобао, Tmall) с проверкой качества, скидка для форумчан 7% Партнерская программа 2 уровня: 5% + 5%. Подробнее. (https://redmall.ru/about/partner/)
TS
На сайте с 26.06.2008
Offline
36
#1

Да нормально отнесутся. хедер же с ошибкой 404 они получают.

Я б еще после редиректа приписал бы exit(); для надежности.

CenaMashin.ru (http://cenamashin.ru) - Сколько стоит твоя машина?
[Удален]
#2
Lord Maverik:

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

для поисковика

Lord Maverik:
header("Location: http://moidomen/index404.php");

для юзера

Lord Maverik:
чтобы юзер увидел сообщение об ошибке в таком виде, как я этого хочу.

юзер будет счастлив

Lord Maverik:
Как отнесуться к этому ПС, нормально?

поисковик тоже будет счастлив :)

ПЗ
На сайте с 10.10.2006
Offline
92
#3

А точно на выходе будет 404 заголовок? я сколько не пробовал, но как только добавляешь Location то выдает 302

Автомобили в России (http://www.autobb.ru/). Спецтехника BIZ - вся строительная, дорожная, коммунальная техника (http://www.spectehnika.biz/) и другая спецтехника в одном месте.
Lord Maverik
На сайте с 15.04.2003
Offline
471
#4

Павел Зотов, ну у меня получилось.

Попробуй - http://www.icasinoclub.com/blablabla

K
На сайте с 31.01.2001
Offline
737
#5
Lord Maverik:
чтобы юзер увидел сообщение об ошибке в таком виде, как я этого хочу.

Для этого существует директива ErrorDocument .

А слово "редирект" вместе с 404 выглядит совершенно неуместно, потому что так не бывает по определению.

Выделенные полосы в Москве (http://www.probkovorot.info) привели к снижению скорости до 23%.
Brand from Amber
На сайте с 18.08.2007
Offline
293
#6
Lord Maverik:
header("HTTP/1.1 404 Not Found");
и прекращаю работу скрипта.

А если я добавлю после этой строки
header("Location: http://moidomen/index404.php");

А зачем редирект, когда можно после того как вернули 404 Not Found, послать клиенту HTML, а только затем прекратить работу скрипта?

Лучший способ понять что-то самому - объяснить это другому.
Lord Maverik
На сайте с 15.04.2003
Offline
471
#7

Kost, то серверная директива апачу как я понял, а тут фишка немного в другом. Допустим есть новости. Вот я новость удалил и ее какбы больше нет. Что ее нет, я могу узнать только прогнав скрипт. Т.е. я уже на этом этапе перехватил обработку URI апачем и сам все делаю. И вот я разобрал строку, параметры, выяснил, что данной страницы как бы нет, и хочу поведать об этом пользователю (блога с ним проблем нет, ему об этом как угодно можно расскзать), а также хочу чтобы ПС тоже знала, что искомой страницы более нет, и нефиг ее в индексе деражть.

Lord Maverik добавил 05.12.2008 в 09:51

Brand from Amber:
А зачем редирект, когда можно после того как вернули 404 Not Found, послать клиенту HTML, а только затем прекратить работу скрипта?

Ну это уже технические тонкости. Есть файл index404.php, который вызывается апачем вслучае 404, когда он ее поймал. Самый простой способ в этой ситуации и самому отправлять просто на этот файл юзера и все.

K
На сайте с 31.01.2001
Offline
737
#8

А, понятно. Ну если уже разобрана строка, то какие могут быть проблемы, выдать хедер 404 и нужный контент с сообщением об ошибке. Только слово "редирект" режет слух, оно совсем ни к чему.

Кстати, тут нет никакого Location:

http://www.icasinoclub.com/blablabla

Lord Maverik
На сайте с 15.04.2003
Offline
471
#9
Kost:
Кстати, тут нет никакого Location:
http://www.icasinoclub.com/blablabla

Тут нет, тут апач сам.

А вот если так:

http://www.icasinoclub.com/blablabla/bla.html

тот тут уже есть, я именно про этот случай и спрашивал.

Как лучше, так как сейчас, или без редиректа просто прочитать содержимое index404.php и отобразить его?

Lord Maverik добавил 06.12.2008 в 05:12

Попутно еще вопрос, как в .htaccess прописать таку штуку:

У меня идет на нем перехват всех index.html и дальше разбор и вывод строки. Соответсвенно в корне лежит путой index.html. Все как бы нормально. Но тут обнаружил, что есть много ссылок на index.htm (старая версия сайта). Сейчас по этой странице апач отдает 404-ю. Мне кажеться это не очень хорошо, у меня беки идут на 404-ю, т.е. по сути теряются. Думаю логично сделать 302-ю, moved permanently или как там его.

Я написал так:

Redirect 301 /index.htm http://www.icasinoclub.com/index.html

Но получил такую траблу, при открытии http://www.icasinoclub.com/ первым запрашивается index.htm и всегда работает этот редирект, это глюк.

Как сделать так, чтобы этот редирект страбатывал именно при явном запросе index.htm , а не просто главное страницы.

ПЗ
На сайте с 10.10.2006
Offline
92
#10
Lord Maverik:
Тут нет, тут апач сам.
А вот если так:
http://www.icasinoclub.com/blablabla/bla.html
тот тут уже есть, я именно про этот случай и спрашивал.

зато тут уже нету 404. я про то и писал, что если пишете Location, то 404 уже не будет.

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