Динамические страницы и индексация

12
Fad
На сайте с 25.09.2001
Offline
124
Fad
5378

Вот обнаружил следущее в логах.

"GET /portal/Evideo/ HTTP/1.1" 200 30451 "-" "Yandex/1.03.003 (compatible; Win16; D)"

и вот это

"GET /portal/Evideo/ HTTP/1.1" 406 444 "-" "Yandex/1.01.001 (compatible; Win16; I)"

Робот

с клиентом D хавает, а вот с робот I не хочет.

Пишу заголовки следующие,

Header("Status: 200");

Header("Last-Modified: ".gmdate("D, M d Y H:i:s",filemtime("portal.php"))." GMT");

При проверки конфигурации, Яндекс говорит что все ок.

В чем проблема?

С уважением, Фадеичев Андрей, руководитель проекта "Биржа контента eTXT.ru" (http://www.etxt.ru/)
D
На сайте с 19.02.2001
Offline
14
#1

Пиши так:

@header("HTTP/1.0 200 OK");

@header("HTTP/1.1 200 OK");

@header("Status: 200");

@header("Last-Modified: ".gmdate("D, M d Y H:i:s",filemtime(basename($PHP_SELF)))." GMT");

Это чтобы наверняка.

SS
На сайте с 31.08.2001
Offline
14
#2
Первоначальное сообщение от Fad

Робот с клиентом D хавает, а вот с робот I не хочет.
В чем проблема?

Тут, ЕМНИП, уже выдвигалось предположение, что робот I (картиночный) выдаёт заголовок типа


Accept: image/*

Естественно при запросе документа типа text/plain (например robots.txt) и text/html (содержимое каталога) сервер отвечает ему кодом 406.

LM
На сайте с 30.11.2001
Offline
71
LiM
#3
Первоначальное сообщение от Sad Spirit

Тут, ЕМНИП, уже выдвигалось предположение, что робот I (картиночный) выдаёт заголовок типа

Accept: image/*

Естественно при запросе документа типа text/plain (например robots.txt) и text/html (содержимое каталога) сервер отвечает ему кодом 406.

Как человек, выдвигавший то предположение, вынужден указать на неточность пересказа - тогда речь шла не про робота I, а про робота P, который и является "картиночным".

Робот I, наоборот, занимается индексированием только текстовой информации. Если бы он выдавал некорректный заголовок, Яндекс давно бы остался с пустой поисковой базой...

Тут дело не в роботе и его заголовках, а в том, что сервер не хочет по какой-то причине отдавать роботу содержимое страницы. Либо это какая-то аномалия в настройке Apache, либо неправильно написанный скрипт...

Относительно же совета с 4-мя заголовками замечу, что они чрезмерно избыточны. Достаточно любой из первых 3-х строк (лучше - 2-ю) и последней строки.

С уважением, Андрей Хроленок. Загляни в FAQ по оптимизации и продвижению сайтов (http://www.seoman.ru/FAQ/) Анализатор страниц сайтов (http://www.seoman.ru/analizer/)
Григорий Селезнев
На сайте с 25.09.2001
Offline
298
#4

есть ли способ "послушать" какие заголовки передает робот/браузер серверу ?

SS
На сайте с 31.08.2001
Offline
14
#5
Как писал Professor
есть ли способ "послушать" какие заголовки передает робот/браузер серверу ?

в связке Apache/PHP --- getallheaders()

Первоначальное сообщение от LiM
Как человек, выдвигавший то предположение, вынужден указать на неточность пересказа - тогда речь шла не про робота I, а про робота P, который и является "картиночным".
Робот I, наоборот, занимается индексированием только текстовой информации. Если бы он выдавал некорректный заголовок, Яндекс давно бы остался с пустой поисковой базой...

Тут дело не в роботе и его заголовках, а в том, что сервер не хочет по какой-то причине отдавать роботу содержимое страницы. Либо это какая-то аномалия в настройке Apache, либо неправильно написанный скрипт...

Да, с роботами я тупил. :D

Но если заглянуть в rfc2616


10.4.7 406 Not Acceptable

The resource identified by the request is only capable of generating
response entities which have content characteristics not acceptable
according to the accept headers sent in the request.

то станет понятно, что робот Яндекса вполне может отдавать заголовок типа Accept-Charset или Accept-Language...

Надо бы из скрипта тогда отавать ещё Content-type с правильным языком и кодировкой.

Fad
На сайте с 25.09.2001
Offline
124
Fad
#6
Как писал Professor
есть ли способ "послушать" какие заголовки передает робот/браузер серверу ?

А как "послушать" что сервер передает, где то это в форуме было,

только не нашел я. Кто знает, подскажите.

Fad
На сайте с 25.09.2001
Offline
124
Fad
#7

Убрал заголовки, все осталось по прежнему,

в общем беда.

Пришел Гугль и вот

"GET /portal/Ecamera/ HTTP/1.0" 406 434 "-" "Googlebot/2.1 (+http://www.googlebot.com/bot.html)"

опять ошибка 406.

Хочу рассказать про механизм имитации,

некоторые поисковые системы не могут индексировать динамические страницы с адресом вида www.имя.ru/portal.php?id=12&kat=1524. Поэтому был разработан скрипт который преобразовывает динамические адреса вида “www.имя.ru/portal.php?kat=ephoto&id=2”, в статический адрес вида “www.имя.ru/portal/ephoto/2/”.

Для реализации данной задачи, необходимо прописать в установках директории (httpd.conf или .htaccess) строку "Options Multiviews" или, если директива Options уже есть, добавить MultiViews к ней. Тогда если пользователь набирает " www.имя.ru/portal/ephoto/2 ", сервер будет искать файл с именем "portal" и с любым расширением и исполнять его.

Файл portal.php обрабатывает переменную $REQUEST_URI и, если нужная информация найдена, выдает команду

Header ("HTTP/1.0 200 Ok");

Header("Last-Modified: ".gmdate("D, M d Y H:i:s",filemtime(basename($PHP_SELF)))." GMT");

В чем может быть проблема.

Fad
На сайте с 25.09.2001
Offline
124
Fad
#8

Переписал, на модуль RewriteEngine.

Вот что получилось.

Ну думаю это врядли поможет.

RewriteEngine On

RewriteRule ^(.*).htm$ /portal/$1

<FilesMatch "(portal)$">

ForceType application/x-httpd-php

</FilesMatch>

Думаю проблема с заголовками.

SS
На сайте с 31.08.2001
Offline
14
#9

ну и навертели... MultiViews для таких использовать --- примерно как молотком шурупы заворачивать. Он используется для выбора наиболее подходящего представления одного документа.

Гипотеза об ошибке такая: браузер, как правило выдаёт заголовок

Accept: разная/хрень, q=1.0; */*, q=0.1

Поисковику */* не нужно, потому он просит только

Accept: разная/хрень

Введённый в заблуждение MultiViews'ом сервер видит файл типа application/x-httpd-php и в первом случае отдаёт результаты его работы, а во втором --- ошибку 406, т.к. документ поисковику явно не подходит.

Второе решение, хм, тоже через тыльную часть сделано. Я бы предложил так:


RewriteEngine On
RewriteBase /portal/
RewriteRule ^([a-z]+)/([0-9]+)/?$ /portal.php?id=$2&kat=$1 [L]
RewriteRule ^([a-z]+)/?$ /portal.php?kat=$1 [L]
Fad
На сайте с 25.09.2001
Offline
124
Fad
#10

Спасибо за ответ Sad Spirit,

так все таки ошибка из за директивы MultiViews...

А эта будет работать?

RewriteEngine On

RewriteRule ^(.*).htm$ /portal/$1

<FilesMatch "(portal)$">

ForceType application/x-httpd-php

</FilesMatch>

Просто пока счас таким образом работает.

Будет время, переделаю под твое решение.

12

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