Возможно ли дружественное перенаправление в поисковых системах с интерфейсной страницей? - PullRequest
2 голосов
/ 12 июня 2011

Я хочу перенаправить страницу как: http://www.mysite.com/index.php?id=1 на http://www.mysite.com/the-real-name.htm, но у меня нет реального имени в первом URL, тогда я должен получить его из db.

Я создал интерфейсную страницу, затем перенаправил на нее страницу http://www.mysite.com/index.php?id=1 и извлек реальное имя (с параметром id в URL) из db, после чего перенаправил страницу на http://www.mysite.com/the-real-name.htm с функцией заголовка PHP.

дружественна ли эта поисковая система?

Какая страница будет проиндексирована поисковым роботом? Страница интерфейса или http://www.mysite.com/the-real-name.htm?

Какое наилучшее решение для индексации http://www.mysite.com/the-real-name.htm?

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 12 июня 2011

Если вы хотите сообщить поисковой системе, что окончательный URL - это «URL», вам нужно сделать постоянное перенаправление . Код состояния HTTP: 301.

header('Location: http://www.mysite.com/the-real-name.htm', true, 301);

Для первого перенаправления необходимо выполнить временное перенаправление . Код состояния HTTP: 302.

header('Location: http://www.mysite.com/index.php?id=1', true, 302);

Имейте в виду, что хорошей практикой является не только отправлять заголовки для перенаправлений, но и HTTP / HTML BODY, который также передает удобочитаемую информацию в новое местоположение. Перенаправления не должны автоматически выполняться клиентом.

Различные способы реализации

В зависимости от системы, в которой вы работаете, настройка заголовка состояния HTTP с помощью PHP может отличаться. Код выше для рабочей версии PHP. Придерживайтесь последних. Однако, если вы не можете и интеграция с сервером нарушена, вы можете немного расширить границы и немного обойти:

# Manually sending the HTTP 1/1 status line header - PHP does this nowadays, so normally not needed. But if you need it, ensure it's the first header you send.
header ('HTTP/1.1 301 Moved Permanently'); 
# Same here, but some CGI/FCGI+PHP implementations require you to set the Status header as well manually. Normally not needed.
header ('Status: 301'); 
# Set the Location header and status: (you will always need this)
header ('Location: http://www.mysite.com/the-real-name.htm', true, 301); 

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

$ curl -i "http://www.mysite.com/index.php?id=1"

В противном случае потребуется немного времени, чтобы Google отразил изменения только для того, чтобы вы поняли, что допустили ошибку.

1 голос
/ 12 июня 2011

Если отношение не может измениться , используйте постоянное перенаправление , как предложил хакре (код состояния 301).В противном случае, если это же значение id может указывать где-то еще в будущем, используйте временное перенаправление.

В любом случае, если канонический (официальный, основной, основной) URL-адрес равен "http://www.mysite.com/the-real-name.htm", вы можете указать поисковым системам, что с каноническим метатегом в разделе head страницы:

<link rel="canonical" href="http://www.mysite.com/the-real-name.htm" />
1 голос
/ 12 июня 2011

При перенаправлении также установите заголовок 301, и поисковые системы будут знать, что оттуда.

header ('HTTP/1.1 301 Moved Permanently');
header ('Location: '.$location);
...