melkov

Рейтинг
57
Регистрация
25.01.2001
Должность
postgraduate student (DMMC), yandex.ru programmer
Интересы
search engine(s), 3d engines

Поиск по w3.org. Интересные ссылки.

Robots - may 1996

http://www.w3.org/Search/9605-Indexing-Workshop/Papers/Frumkin@Excite.html :)

- список того, чего не хватало в robots.txt

Robots - june 1996

http://www.kollar.com/robots.html (в конце документа)

<META NAME="URL" CONTENT="absolute url">

На этом все и закончилось, фактически, в 1996 году.

misha: > Я до конца не понял как должна интерпретироваться эта директива

Gray: > misha, как я понял, эта директива должна указать роботу, что из имеющихся трех зеркал одно - главное.

Это не совсем так. Точнее, это должно быть следствием формального действия 'Host': запрещение индексации сайта в случае, если 'Host' имеется в robots.txt, но этот сайт там не упомянут. Не важно, зеркало или нет, разный IP или одинаковый. Т.е. Host воспринимается формально, без обязательной привязки к вопросу о зеркалах.

Во время парсирования robots.txt надо знать ровно 1 дополнительный параметр: имя хоста с номером порта. Сейчас Host может располагаться там же (и только там), где и Disallow (может быть, это, конечно, и не совсем правильно).

Для каждой корректной директивы Host в каждой записи сравниваем ее параметр с нашим хостом/портом:


badhost = stricmp(Host, host) || Port != port;
if (!badhost) goodhost = true;

А в конце записи, если (badhost && !goodhost), просто добавляем Disallow: /.

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

Запрет индексации не позволяет обманывать поисковую систему в случае, если вдруг будет решено склеивать индекс цитирования, например, без проверки на фактическую зеркальность, основываясь только на директиве 'host'.

Ну а в случае явной проверки на зеркала Host - это просто предложение проверить зеркальность. Опять же, IP, альясы и пр. тут ни при чем. Если кто-то держит два идентичных сайта на boom.ru и narod.ru, у него вполне может быть одинаковый robots.txt с директивой Host.

AiK, кажется, понятно.

Не обращайте внимания :)

AiK, lwp-trivial - это Вы о чем?

В исходниках Яндекса такой строчки вроде нет... :)

Кстати, на данный момент уже есть кое-какая статистика:

1 пользователь правильно понял текст про "Host:" в webmaster2.html

0 пользователей - неправильно.

:)

> Ну, в классических ситуациях разобраться как раз несложно - если по www вообще хоть как-то отвечает, то ему и быть основным.

К сожалению, есть некоторый процент вебмастеров, которые придерживаются иной точки зрения.

> если они возникают и представляют собой зеркало основного сайта

Значит, владелец сайта заранее, на всякий случай (например, опасаясь киберсквоттеров и тайпсквоттеров) закупил еще несколько доменных имен и "запарковал" все на свой основной сайт.

AiK, еще раз:

User-Agent: Yandex

Disallow: /

Host: www.myhost.ru

равняется:

User-Agent: Yandex

Disallow: /

Disallow: /

(2 раза)

для неосновных зеркал

и

User-Agent: Yandex

Disallow: /

для основного зеркала.

Т.о. все предусмотрено. А вот документацию скорее всего еще придется подправлять. feedback-то уже есть :)

> по правилам логики это равносильно ...

AiK, вообще-то двойное отрицание равносильно исходному значению только в двузначной логике :). А в нашем случае ее не наблюдается.

Все-таки, вопрос: прочитав кусок текста на webmaster2.html, можно ли прийти к тому заблуждению, о котором Вы пишете?

> User-Agent:Yandex
> Disallow: /
> Host: zerkalo1.ru
> Host: zerkalo2.ru

Вообще говоря, директива host в изначально предложенном виде является по своей функциональности подмножеством того, что Вы предлагаете, если положить, что в этом случае хосты, не упоминаемые в релевантных секциях robots.txt, также имеют "disallow: /".

Вообще-то, этот вариант у нас тоже обсуждался, но решили его не делать. Он делает robots.txt уже двумерным :). Соответственно, можно ожидать, что и количество ошибок при его составлени возведется в квадрат.

funsad,

> Почему же? Все, что уменьшает путаницу, хорошо.

Уверяю, лишний файл только увеличивает путаницу.

> что может быть приятней для саппорта,

На самом деле, только то, что пользователь вообще не будет писать в support! Ну а про robots.txt ведь тоже самое ответить можно.

> Был у меня сайт на бесплатном хостинге, переехал на платный. Вначале Яндекс распознал его как зеркало.

На самом деле, достаточно сделать полный редирект. Т.е. "www.oldhost.ru/foo" -> "www.newhost.ru/foo". Правда, не везде такое получится :(. Можно на самых интересных страницах поставить meta refresh на новый сайт.

Кстати, повторяю на всякий случай (это не секрет ;)), что за meta refresh (в отличие от JSR - java script redirect, и т.п.) санкций не бывает (у нас, по крайней мере). Страница с meta refresh просто считается обычным редиректом, как если бы возвращала 301, 302 или 303.

Тем не менее, еще раз скажу: если пожелания, упомянутые в robots.txt, учитывать при подсчете CY, это будет не более вредно, чем учитывать пожелания, упомянутые в предлагаемом mirrors.txt

AiK,

> А именно это напишет неискушенный "ваятель html",

вы точно прочитали текст на webmaster2.html?

Кстати, я сейчас там специально подправил пример:


User-Agent: *
Disallow: /forum
Disallow: /cgi-bin
Host: www.glavnoye-zerkalo.ru

Ну как? :)

> а деректива host, наоборот разрешает

Как это? Она же тоже запрещает (пишу это уже второй раз:))

Кроме того, есть ведь в стандарте и разрешительная срочка: "disallow: ".

> http://www.google.com/webmasters/3.html#B10

Извиняюсь, не заметил 🙄

В любом случае, в стандартном robots.txt после disallow не могут быть символы * и $. Согласитесь, тем не менее, что их расширение - тоже не идеально. Я бы, к примеру, на их месте просто завел бы новую директиву, к примеру DisallowRegexp, DisallowWildcard и т.д. На роботов, которые это не смогут переварить (как и Host), честно говоря, необходимо плюнуть, т.к. они нарушают стандарт.

Хотя, в прочем, www.myhost.ru/ тоже не может быть нормальным внутренним url'ом. Но это уже было бы совсем другое расширение, т.к. не дает возможность запретить "всех кроме".

AiK, Вы что-то не понимаете.

Host: www.mysite.spb.ru

запрещает всех, кроме www.mysite.spb.ru.

Об этом же ясно написано и в приведенной ссылке, и в процитированных письмах.

Ну а приведенный Вами robots.txt вообще все для всех запрещает, т.к. директива Host имеет тоже только запретительный характер, и не отменяет директив disallow.

> Гугль же ввёл звёздочку

Что-то я не заметил. Пожалуйста, дайте ссылку на то место, где это написано. А то вот в их хелпе только ссылки на www.robotstxt.org

> Или Яндекс всегда идёт своим путём

Это Вы следование стандарту называете "своим путем"? 😮

funsad, лишний файл - это уж слишком :).

>Зеркала могут быть частичными

На самом деле, не совсем понятно, зачем считать зеркалами то, что зеркалами не является.

Для склейки ИЦ? Со временем, подумав, можно просто прийти к "склейке" сайта, на котором лежит robots.txt, с сайтом, на который указывает директива Host. На первый взгляд, обмануть поисковую систему таким образом не удастся, поскольку хосты, запрещенные при помощи 'Host', индексироваться-то не смогут.

> Как и Ваше

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

Повторюсь, об изменении трактовки "знакомых" директив не может быть и речи. Это более обсуждать не стоит.

> он дополнительную строку _внутри_ - не уверен

Согласно стандарту - должен пропустить. Правда, практика показывает, что у значительного числа людей возникают трудности с чтением стандарта. Именно поэтому 'Host' и рекомендуется писать в конце записи.

> Видимо из-за того, что у меня домен виртуальный

Значит, поняли.

Всего: 142