301 редирект через php

12
Q9
На сайте с 19.01.2010
Offline
13
1364

На своём сайте прописал редирект

header('HTTP/1.1 301 Moved Permanently');

header('Location:/context/error.php');

который, при неправильном введении url перебрасывает пользователя на страницу с ошибкой error.php.

Однако по поводу уместности использования header('HTTP/1.1 301 Moved Permanently') возникли сомнения. В одном из постов на форуме нашёл следующее:

Если Вы пропустите строчку header('HTTP/1.1 301 Moved Permanently'), то в заголовке вернётся сообщение с кодом 302. Что означает буквально следующее, страница перемещена временно и через некоторое время она появится снова или не появится.

Однако там шла речь о 301 редиректе сайта с www на без www. Поэтому использование в этом случае header('HTTP/1.1 301 Moved Permanently') не вызывает сомнения. Нужно ли прописывать эту строчку кода в моём случае?

И ещё. С точки зрения поисковой оптимизации верным способом перенаправления пользователей считается только 301 редирект (флаги [R=301,L] в файле .htaccess). А при создании ЧПУ обычно приводятся примеры с флагом [L]. Это также верно с точки зрения SEO, и в чём здесь разница?

dma84
На сайте с 21.04.2009
Offline
168
#1
qwr938:
На своём сайте прописал редирект
header('HTTP/1.1 301 Moved Permanently');
header('Location:/context/error.php');

который, при неправильном введении url перебрасывает пользователя на страницу с ошибкой error.php.

а вот так делать не нужно, нужно возвращать ошибку 404 или 410 да и вообще такие дела прописываются в .htaccess - ErrorDocument 404 /404.html

qwr938:

Однако по поводу уместности использования header('HTTP/1.1 301 Moved Permanently') возникли сомнения. В одном из постов на форуме нашёл следующее:

Однако там шла речь о 301 редиректе сайта с www на без www. Поэтому использование в этом случае header('HTTP/1.1 301 Moved Permanently') не вызывает сомнения. Нужно ли прописывать эту строчку кода в моём случае?

ничего не понял, юзайте редирект таким способом, ошибиться сложнее:

header('Location: /page.html', TRUE, 301);
qwr938:

И ещё. С точки зрения поисковой оптимизации верным способом перенаправления пользователей считается только 301 редирект (флаги [R=301,L] в файле .htaccess). А при создании ЧПУ обычно приводятся примеры с флагом [L]. Это также верно с точки зрения SEO, и в чём здесь разница?

Примеры с флагом [L] нужны для внутреннего перенаправления (не внешнего), т.е. браузер пользователя его не видит, всё происходит на стороне сервера.

Q9
На сайте с 19.01.2010
Offline
13
#2
dma84:
а вот так делать не нужно, нужно возвращать ошибку 404 или 410 да и вообще такие дела прописываются в .htaccess - ErrorDocument 404 /404.html

А как с помощью php возвратить ошибку 404. Вот так?

header('Location:/context/error.php', TRUE, 404);
dma84
На сайте с 21.04.2009
Offline
168
#3

header('Location:/context/error.php', TRUE, 404);

Таким образом будет возвращён код 404, но переадресации не будет.

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

Q9
На сайте с 19.01.2010
Offline
13
#4

А если, например, пользователь вбивает в строку браузера неправильный url, а я его перенаправляю на правильный url, то какой редирект нужно использовать в этом случае? Верно ли будет с точки зрения SEO сделать редирект вот так:

header('Location:правильный_url');
dma84
На сайте с 21.04.2009
Offline
168
#5

А как вы узнаете на какой УРЛ перенаправлять?

З.Ы.: с точки зрения СЕО, если юзер не ПС, то ставьте любой редирект какой вам по вкусу

Q9
На сайте с 19.01.2010
Offline
13
#6
dma84:
А как вы узнаете на какой УРЛ перенаправлять?

У меня на сайте свой обработчик url. А что означает фраза "если юзер не ПС"? ПС - поисковая система что ли? А если юзер ПС?

dma84
На сайте с 21.04.2009
Offline
168
#7
qwr938:
А если юзер ПС?

Тогда 301 редирект отдавать с любого несуществующего адреса нельзя.

Q9
На сайте с 19.01.2010
Offline
13
#8
dma84:
Тогда 301 редирект отдавать с любого несуществующего адреса нельзя.

То есть верным будет сделать вот так

header('Location:правильный_url');

А вес страницы при этом не потеряется?

dma84
На сайте с 21.04.2009
Offline
168
#9

Да, так вернее, а о каком весе может идти речь у несуществующей страницы?

Q9
На сайте с 19.01.2010
Offline
13
#10
dma84:
Да, так вернее, а о каком весе может идти речь у несуществующей страницы?

Возникла следующая мысль.

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

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

а затем сделать редирект (если это возможно) на страницу с правильно записанным url:

header('Location:правильный_url');

Верно ли моё рассуждение?

12

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