Приветствую вас, уважаемые коллеги. В предыдущей статье о поисковой оптимизации сайтов я подробно рассказал о том, как создать ЧПУ или SEF ссылки своими руками. В сегодняшней статье мы затронем такую заезженную тему как правильный robots.txt Тем не менее многие веб-мастера не понимают как правильно нужно использовать этот файл, а также в связке с чем (?) его нужно использовать для максимальной отдачи в виде полного отсутствия дублей страниц на сайте.
robots.txt – это самый обыкновенный текстовый файл, который должен находиться в корне вашего сайта:
http://site-on.net/robots.txt
Главная цель его использования – указать в нём ваши рекомендации о том, как роботы должны сканировать (индексировать) ваш сайт. То есть это то же самое что и записка на холодильнике: мы её оставляем, её, скорее всего, найдут и прочтут (Яндекс и Гугл точно прочтут), а выполнять то, что там написано или не выполнять - это дело каждого.
Самое главное – это запретить сканировать служебные файлы, например, XML данные, файлы конфигурации и другой мусор, который может хранится у вас на сервере. Для этого мы можем запрещать к индексированию целые папки, например, при разработке структуры данного блога, я заранее спланировал всё так, чтобы все служебные файлы находились в одной единственной папке, а уже внутри неё всё располагается как угодно. Для наглядности, вот структура моего сайта:
В корне лежат только самые главные файлы – это карта сайта (sitemap.xml), непосредственно сам robots.txt, главный файл (index.php), файл тонкой конфигурации веб-сервера (.htaccess) и иконка сайта (favicon.ico). Иконку сайта (фавикон) и карту сайта тоже можно было поместить в папку blog, но я за классику :)
Далее идут всего 2 папки – это папка blog, в которой я спрятал абсолютно все файлы блога от глаз роботов и рук злоумышленников, а также папка images, в которой хранятся все картинки моего сайта. Папку с картинками ни в коем случае нельзя запрещать индексировать, так как ваши картинки могут попасть в каталоги картинок Яндекса и Гугл, особенно если они уникальные, мало весят (быстро загружаются) и имеют атрибут alt в HTML теге img:
<img src="/images/screen4.png" alt="phpDesigner 8" width="778" height="472" />
Такие картинки попадут в Яндекс.Картинки и Картинки Google и смогут принести дополнительный трафик вам на сайт.
Картинки никогда не запрещаем к индексированию! С этим разобрались, но вот папку blog обязательно нужно.
Обновление 19.04.2015
Нельзя запрещать к индексации файлы стилей (css, js, шрифты), иначе поисковые системы не будут видеть дизайн вашего сайта, а это плохо, ведь они не смогут оценить его удобство. Вернее даже наоборот, они будут считать, что ваш сайт безобразен. Но это пол беды, хуже то, что если вы используете адаптивный дизайн, то Google не сможет об этом узнать и будет считать, что ваш сайт не адаптирован под мобильные устройства. А это влечёт за собой искусственное понижение позиций вашего сайта в выдаче на мобильных устройствах (смартфоны, планшеты).
Для этого открываем файл robots.txt и прописываем следующую директиву:
User-agent: * Disallow: /blog/
Директива Disallow (запрет) потом двоеточие, пробел и относительный путь к папке, файлу или URL. Обратите внимание: в robots обязательно должна находиться хотя бы одна Disallow директива! Вот вам для примера стандартный robots.txt Joomla:
User-agent: * Disallow: /administrator/ Disallow: /cache/ Disallow: /cli/ Disallow: /components/ Disallow: /images/ Disallow: /includes/ Disallow: /installation/ Disallow: /language/ Disallow: /libraries/ Disallow: /logs/ Disallow: /media/ Disallow: /modules/ Disallow: /plugins/ Disallow: /templates/ Disallow: /tmp/
Обратите внимание, здесь ошибка! В стандартном файле robots для Joomla есть запрет на индексирование картинок! Возможно и правда, не все картинки из этой папки нужно индексировать, но запрещать всю папку целиком точно нельзя! Для этого мы можем поступить более избирательно, например, так:
Disallow: /images/banners/ Disallow: /images/sampledata/
То есть мы запретили две папки с картинками, которые не подходят для каталогов картинок (допустим, если там содержаться картинки с деталями нашего шаблона, или оформление админ панели), но оставили открытым всё остальное содержимое папки images, так как там, например, может находиться папка stories, в которой лежат картинки товаров VirtueMart. Закрыть картинки (фото) товаров вашего интернет-магазина будет большой ошибкой!
Если вы не хотите закрывать от индексации целые каталоги (папки), то вы можете воспользоваться следующим приёмом:
Disallow: /*.pdf$ Disallow: /*.doc$
В примере выше мы запретили к индексированию все файлы, которые заканчиваются на .pdf и .doc, то есть PDF документы и документы Microsoft Word. Символ звёздочки обозначает любую последовательность символов, а символ доллара – конец url.
Можно запрещать к индексированию файлы, которые начинаются на определённую фразу:
Disallow: /sha
Мы запретили все url, которые начинаются на sha:
http://site-on.net/sha http://site-on.net/sharik http://site-on.net/sha234 http://site-on.net/sha/pictures http://site-on.net/sha/images/product
Внимание! Если вы напишете так:
Disallow: /
То запретите индексирование всего сайта, будьте внимательны!
Запрещать мы научились, только вот не разобрались зачем. Кто-то может подумать, что так можно скрыть конфиденциальные данные, но нет! Конфиденциальные данные нужно скрывать паролем, а не в robots.txt. Файл robots.txt мы используем по одной главной причине – чтобы роботы не тратили время на сканирование технических файлов и тем самым не нагружали зря наш сервер.
«А как же на счёт дублей страниц?» - спросите вы. Да, когда-то это был главный и чуть ли не единственный способ, который все применяли поголовно. Но сегодня оптимизаторы (не все) уже пришли к тому, что избавляться от дублей страниц благодаря robots.txt нецелесообразно! Я уже давно пришёл к этому самостоятельно благодаря опыту, но для меня стал приятным удивлением тот факт, что об этом заговорили уже многие, хотя далеко не все.
Как же тогда избавляться от дублей страниц? Чтобы предотвратить возникновение дублей страниц вы должны модифицировать («допилить», переделать) сам движок вашего сайта. Некоторые тратят на это деньги, заказывая данную услугу у фрилансеров или SEO кампаний, однако я хочу вам предложить мой бесплатный и простой в понимании метод, который я подробно описал в статье про дубли страниц в Joomla 2.5 и VirtueMart 2. В статье я рассказал о моём универсальном способе, который подойдёт для абсолютно любого сайта и CMS! С помощью него вы действительно навсегда избавитесь от проблемы дублей страниц.
Я недавно встретил сайт, на котором было написано что-то вроде: «В robots.txt мы ничего не разрешаем, только запрещаем». Так вот это не правда. В robots.txt можно как запрещать индексировать, так и разрешать, как это можно использовать? Например, я хочу запретить к индексированию всю папку blog, но хочу разрешить одну единственную подпапку в ней. Для этого пишем следующее:
User-agent: * Allow: /blog/images/ Disallow: /blog/
Я запретил всю папку блог, но разрешил (как исключение) папку images внутри папки blog. Что написать сначала Allow или Disallow не имеет разницы.
Яндекс пишет:
Порядок следования директив в файле robots.txt не влияет на использование их роботом.
1) Первой строкой указываем робота, для которого мы пишем правила, если указать звёздочку, это означает правила для всех роботов:
User-agent: *
Можно указать отдельно для Яндекса или Гугл:
User-agent: Yandex
Но это ещё не всё, мы можем указывать конкретно для каждого второстепенного робота Яндекса или Гугл. Например, у Яндекса есть следующие боты: YandexBot, YandexMedia, YandexImages, YandexCatalog, YandexDirect, YandexBlogs, YandexNews, YandexPagechecker, YandexMetrika, YandexMarket, YandexCalendar. Думаю, из их названий понятно кто за что отвечает.
2) Нельзя оставлять пустые строки! Пустая строка в файле robots.txt ставится только перед новым User-agent. Например:
User-agent: * Disallow: /blog/ Sitemap: http://site-on.net/sitemap.xml User-agent: Yandex Disallow: /blog/ Host: site-on.net
Важно:
Каждый User-agent может встречаться только по одному разу!
Нельзя писать так:
User-agent: * … User-agent: Yandex … User-agent: * …
3) В robots.txt, как и везде есть возможность оставлять комментарии. Для обозначения однострочного комментария используется символ #:
User-agent: * Disallow: /blog/ # ваш комментарий Sitemap: http://site-on.net/sitemap.xml
Внимание, в robots.txt не существует многострочных комментариев!
Если у вас есть XML карта сайта, а она обязана быть у каждого сайта, то вы можете указать роботам путь к ней. Это делается с помощью директивы Sitemap:
User-agent: * Sitemap: http://site-on.net/sitemap.xml
В случае если у вас несколько файлов с XML картой сайта, вы можете указать их все:
User-agent: * Sitemap: http://site-on.net/sitemap.xml Sitemap: http://site-on.net/sitemap2.xml Sitemap: http://site-on.net/sitemap3.xml
Директиву Host я обычно указываю только для Яндекса, так как он точно её учитывает. Директива Host указывает роботам главное зеркало вашего сайта (с www или без www). В отличие от Sitemap, директива Host может быть только одна! И не забываем, что по стандарту каждый User-agent должен содеражать хотя бы один Disallow:
User-agent: Yandex Disallow: /blog/ Host: site-on.net
Заметки:
1) Директива Host должна идти после директив Disallow (Allow).
2) В директиву Host не может быть записан ip-адрес сайта!
Данная директива (работает для Яндекса) показывает, с какой задержкой (в секундах) роботы должны индексировать очередную страницу вашего сайта. Она служит для снижения нагрузки на ваш сервер. Однако её можно использовать и наоборот, если вы хотите показать роботам Яндекса, что вы готовы отдавать страницы практически без задержки, то можете указать дробное значение:
User-agent: Yandex Disallow: /blog/ Crawl-delay: 0.1
Это даст Яндексу большую свободу, однако ни к чему его не обязывает.
Request-rate – это аналог Crawl-delay, который понимают западные роботы. Показывает отношение числа загруженных страниц к секундам. То есть если мы запишем так:
User-agent: * Request-rate : 1/3
Это означает, что роботы могут загружать новую страницу каждые 3 секунды. Всё равно что
User-agent: Yandex Crawl-delay: 3
Директива Clean-param тоже помогает снизить нагрузку на сервер. В ней мы указываем адреса страниц, в которых не нужно учитывать выбранные параметры URL. В PHP строка с параметрами называется query string (строка запроса). Другими словами, если один и тот же URL может содержать разные параметры, которые не меняют содержимое страницы, а служат только технической информацией (например, содержат информацию об адресе странице, с которой попали на данную страницу):
http://site-on.net/book.php?ref=site_1 http://site-on.net/book.php?ref=site_2
то мы можем указать роботу, чтобы он не учитывал параметр ref:
Clean-param: ref /book.php
Это значит, что робот Яндекса не будет различать страницы с разными параметром ref, а будет считать их за одну и ту же. Если страница доступна вовсе без параметров:
http://site-on.net/book.php
То из всех подобных страниц данная будет взята за основу, а остальные даже не будут загружаться роботом. Такой приём ускорит индексацию остальных страниц сайта и снизит нагрузку на него. Можно указывать сразу несколько параметров, которые нужно игнорировать, например для ссылки:
http://site-on.net/book.php?ref=site_2&id=123&call=asd
Можно указать, что нужно игнорировать все три параметра так:
Clean-param: ref&id&call /book.php
Так как спецификация требует наличие в каждом User-agent хотя бы одного Disallow, то вы можете написать его пустым, если не хотите ничего запрещать:
User-agent: * Disallow:
Это то же самое что и
User-agent: * Allow: /
И наоборот пустой Allow обозначает запрет всего сайта.
Правильно построенным robots.txt для Joomla 2.5 и VirtueMart 2 будет практически стандартный robots.txt с небольшими изменениями:
Обновлено 19.04.2015
1) Убрал отдельный User-agent для Яндекса, это лишний текст.
2) Добавил разрешение на индексирование файлов стилей (css, js, шрифтов) - чтобы Google мог видеть дизайн сайта и его адаптивную (мобильную) версию.
User-agent: * Disallow: /administrator/ Disallow: /cache/ Disallow: /cli/ Disallow: /components/ Disallow: /includes/ Disallow: /language/ Disallow: /libraries/ Disallow: /logs/ Disallow: /media/ Disallow: /modules/ Disallow: /plugins/ Disallow: /templates/ Disallow: /tmp/ Allow: /templates/*.css$ Allow: /templates/*.js$ Allow: /templates/*.png$ Allow: /templates/*.gif$ Allow: /templates/*.jpg$ Allow: /templates/*.jpeg$ Allow: /templates/*.ttf$ Allow: /templates/*.eot$ Allow: /templates/*.svg$ Allow: /templates/*.woff$ Allow: /media/*.css$ Allow: /media/*.js$ Allow: /media/*.png$ Allow: /media/*.gif$ Allow: /media/*.jpg$ Allow: /media/*.jpeg$ Allow: /media/*.ttf$ Allow: /media/*.eot$ Allow: /media/*.svg$ Allow: /media/*.woff$ Sitemap: http://site.com/index.php?option=com_xmap&view=xml&tmpl=component&id=1 Host: site.com
Теперь пояснения. Во-первых, подразумевается, что вы додумались отключить бесполезное отображение страницы в формате PDF и в формате “Для печати”. Если ещё не отключили, то пора это сделать.
Во-вторых, удалён запрет на индексирование папки с картинками и папки installation, которую вы и так должны были удалить сразу после установки Joomla!
В третьих, (обновлено 04.08.2013: удалил лишнюю строку с askquestion, начиная с версии VM 2.0.22 она больше не нужна) не забудьте прописывать атрибут rel="nofollow" для ссылок на корзину, "Задайте вопрос по этому товару" и тд. Более подробно о дублях страниц читайте дальше.
В-четвёртых, в 15 строке мы прописываем путь до XML карты сайта, которая сгенерирована с помощью бесплатного компонента xmap. Внимание! У вас может отличаться последняя цифра в этой строке:
Sitemap: http://site.com/index.php?option=com_xmap&view=xml&tmpl=component&id=1
Если вы создали и удалили карту сайта, а потом опять создали, то цифра будет равняться уже не 1, а 2 и тд.:
Sitemap: http://site.com/index.php?option=com_xmap&view=xml&tmpl=component&id=2
Также в последней строке не забудьте указать директиву Host, хотя её можно указывать и в самом кабинете Яндекса.
И последнее, самое главное! Всё это нужно использовать в связке с моим способом о том, как избавится от дублей страниц в Joomla 2.5 + VirtueMart 2. Переходим по ссылке и читаем!
Выводы: robots является полезным файлом, который помогает управлять роботами, пришедшими на сайт. Однако всё написанное в нём, является только рекомендациями, роботы могут их придерживаться, а могут проигнорировать. Особенно это касается спамеров и хакеров, некоторые из них рады использовать информацию, полученную из robots.txt во вред сайту, так как могут узнать его структуру и вместе с этим слабые места.
Спасибо за внимание, как всегда жду ваших отзывов и замечаний. До встречи в новых статьях блога Site on!
Пожалуйста, прокомментируйте, как Вам моя статья?