header ("location: http://site.com");

12
J
На сайте с 08.06.2006
Offline
844
3366

header ("location: http://site.com"); что обозначает эта конструкция?

Правильно ли будет в случаи если страница не существует делать так

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

header ("location: http://site.com");

exit();

Какая разница между header("HTTP/1.1 404 Not Found"); и header("HTTP/1.0 404 Not Found");

T
На сайте с 11.08.2005
Offline
181
#1
joost:
header ("location: http://site.com"); что обозначает эта конструкция?

Переадресация на страницу http://site.com.

joost:

Правильно ли будет в случаи если страница не существует делать так
header("HTTP/1.1 404 Not Found");
header ("location: http://site.com");
exit();

Если Вам нужно просто выдать 404 ошибку, лучше сделайте так:

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

include $_SERVER["DOCUMENT_ROOT"]."/error404.htm";
exit;

где error404.htm - страница ошибки 404 (Страница не найдена).

Переадресовывать пользователя на главную, вместо выдачи страницы с ошибкой 404 - это не совсем правильно с точки зрения usability.

Каширин
На сайте с 03.01.2004
Offline
1018
#2
joost:
header ("location: http://site.com"); что обозначает эта конструкция?
Правильно ли будет в случаи если страница не существует делать так

header("HTTP/1.1 404 Not Found");
header ("location: http://site.com");
exit();

У вашего кода - два смысла. Первый - вы отдаете инфо о том, что такого документа не существует. Второй - вы перебрасываете пользователя на другой документ.

Если хотите выдавать код на несуществующих документах - просто отдайте 404. Если же вы хотите обеспечить наследственность документов с точки зрения ПС - при переезде документа по новому адресу, то я рекомендую вам использовать такую конструкцию:

header ("Location: index.php",1,301);

В этом случае нет нужды отдавать 404 - ПС и так понимает, что раз док-т переехал, значит по старому адресу его нет.

J
На сайте с 08.06.2006
Offline
844
#3
Timen:
Переадресация на страницу http://site.com.


Если Вам нужно просто выдать 404 ошибку, лучше сделайте так:
header("HTTP/1.0 404 Not Found");

include $_SERVER["DOCUMENT_ROOT"]."/error404.htm";
exit;

где error404.htm - страница ошибки 404 (Страница не найдена).
Переадресовывать пользователя на главную, вместо выдачи страницы с ошибкой 404 - это не совсем правильно с точки зрения usability.

Надо отдать 404 ошибку и перенаправить посетителя на главную страницу. Только сделать это правильно, чтобы поисковики поняли, что страници нет!

bondarev.pp.ru
На сайте с 29.09.2005
Offline
202
#4

joost, в заголовке Location указывается адрес, на который перенаправляется пользователь при 3хх ответе. При 4хх ответах этот заголовок не имеет смысла, и потому игнорируется.

bondarevpipes.com (http://ru.bondarevpipes.com/)
Каширин
На сайте с 03.01.2004
Offline
1018
#5

Важно: простой header ("location: ") отдает 302-й редирект! Если нужен 301-й - используйте header ("Location: index.php",1,301).

В случае ТС достаточно отдать header("HTTP/1.0 404 Not Found"), а в htaccess прописать страницу для 404 ошибки - главную. Тогда ПС будет ловить свои 404, а пользователь - редиректиться на главную.

T
На сайте с 11.08.2005
Offline
181
#6
joost:
Надо отдать 404 ошибку и перенаправить посетителя на главную страницу. Только сделать это правильно, чтобы поисковики поняли, что страници нет!

Какой тогда смысл с 404 ошибки? Отдавайте лучше 301 редирект (перемещено постоянно) и переадресовывайте на главную


header("HTTP/1.1 301 Moved Permanently");
header("Location: http://site.ru/");
exit();
J
На сайте с 08.06.2006
Offline
844
#7
Каширин:
У вашего кода - два смысла. Первый - вы отдаете инфо о том, что такого документа не существует. Второй - вы перебрасываете пользователя на другой документ.

Если хотите выдавать код на несуществующих документах - просто отдайте 404. Если же вы хотите обеспечить наследственность документов с точки зрения ПС - при переезде документа по новому адресу, то я рекомендую вам использовать такую конструкцию:

header ("Location: index.php",1,301);

В этом случае нет нужды отдавать 404 - ПС и так понимает, что раз док-т переехал, значит по старому адресу его нет.

Надо отдать 404 ошибку и перенаправить посетителя на главную страницу. Только сделать это правильно, чтобы поисковики поняли, что страници нет!

Каширин
На сайте с 03.01.2004
Offline
1018
#8
joost:
страници нет!

Будете так писать - поисковики вас часто будут не понимать ;) По существу - ответил в предыдущем посте.

J
На сайте с 08.06.2006
Offline
844
#9
Каширин:
Важно: простой header ("location: ") отдает 302-й редирект! Если нужен 301-й - используйте header ("Location: index.php",1,301).

В случае ТС достаточно отдать header("HTTP/1.0 404 Not Found"), а в htaccess прописать страницу для 404 ошибки - главную. Тогда ПС будет ловить свои 404, а пользователь - редиректиться на главную.

ErrorDocument 404 /index.php это имеете виду?

Убрал header ("Location: index.php") - 404 отдает, а на index.php не переходит

K
На сайте с 31.01.2001
Offline
737
#10
Каширин:
В случае ТС достаточно отдать header("HTTP/1.0 404 Not Found"), а в htaccess прописать страницу для 404 ошибки - главную. Тогда ПС будет ловить свои 404, а пользователь - редиректиться на главную.

Не совсем так. В этом случае в адресной строке у пользователя останется нерабочий URL, редиректа-то не было. ИМХО, нехорошо, если он будет думать, что находится на главной странице. Обычно ему что-нибудь показывают, чтобы было понятно, что ошибка, а потом перекидывают на главную через meta refresh.

Выделенные полосы в Москве (http://www.probkovorot.info) привели к снижению скорости до 23%.
12

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