Поиск по 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
равняется:
(2 раза)
для неосновных зеркал
и
для основного зеркала.
Т.о. все предусмотрено. А вот документацию скорее всего еще придется подправлять. 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' и рекомендуется писать в конце записи.
> Видимо из-за того, что у меня домен виртуальный
Значит, поняли.