Создаём умный robots.txt на PHP — блог Окатьев.Ру

Или как усидеть на нескольких стульях сразу

Создаём умный robots.txt на PHP — блог Окатьев.Ру

Каждый вебмастер сталкивается с ситуацией, когда необходимо использовать два (или более) одинаковых файлов sitemap.xml на одном сайте, но для разных поисковых систем с разным синтаксисом. Вписать несколько раз директиву Sitemap в файл robots.txt в нескольких вариантах не представляется возможным, так как файл не проходит валидацию или подхватывает не ту директиву, а в некоторых случаях подхватывает сразу обе директивы, а следом ругается на то, что файлы ведут к одним и тем же записям. В любом случае образовывается неблагоприятная ситуация с точки зрения поисковой оптимизации, которую можно решить применив решение описанное здесь.

Некоторые вебмастера и вовсе не используют никакие файлы sitemap или используют их, но не придают особого значения тому, в каком виде генерируются эти файлы, игнорируют ошибки, которые могут обернуться санкциями со стороны поисковых систем.

Различия файлов sitemap для Яндекса и Google

Для Яндекса используется простая карта сайта без указания адресов изображений и их принадлежности к тому или иному посту, например:




https://site.ru/some-daily-news.html

daily
2017-07-19T00:30:02+00:00
1.0



https://site.ru/some-other-news.html

daily
2017-07-19T00:30:02+00:00
1.0

Она проходит валидацию в Яндекс.Вебмастере и хорошо им индексируется. Так же sitemap c таким синтаксисом можно использовать и для Google, файл пройдёт валидацию и добавится в Google Console без проблем, но по хорошему счёту для гугла нужно использовать карту сайта с указанием изображений:

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




http://site.ru/some-daily-news.html

daily
2017-07-19T00:30:02+00:00
1.0


http://site.ru/image/cache/catalog/2017/04/19/dsc_4035-site.ru-650x650.jpg

Alt изображения 1
Title изображения 1




http://site.ru/some-other-news.html

daily
2017-07-19T00:30:02+00:00
1.0


http://site.ru/image/cache/catalog/2017/04/21/img_5169-site.ru-650x650.jpg

Alt изображения 2
Title изображения 2


Это рекомендуемый формат файла, который позволит тебе ускорить индексацию нашего ресурса поисковым роботом от Google и ему подобным.

Готовим файлы к правке и вносим изменения

Для того, чтобы иметь возможность безболезненно вписывать сколько угодно много директив Sitemap в файл robots.txt, тебе необходимо проделать следующие действия: В корневой директории твоего сайта нужно создать файл с расширением .php и произвольным именем, к примеру robots-xYz01Q.php, затем переименовать файл robots.txt в old-robots.txt

Метод работает на web-серверах под управлением Apache или Nginx+Apache с исполнением файлов .htaccess в поддерикториях сайта.

Создаём умный robots.txt на PHP — блог Окатьев.Ру

Права на созданный файл необходимо выставить в 0644

Ты можешь назвать новый файл как угодно, но желательно, чтобы этот файл имел длинное и трудное название.

и в файле .htaccess после строк

RewriteEngine On
RewriteBase /

необходимо добавить строку

Rewriterule ^robots\.txt$ /robots-xYz01Q.php [L]

Где robots-xYz01Q — название созданного тобою файла выше. После этого тебе необходимо перенести содержимое файла old-robots.txt в файл robots-xYz01Q.php, например ты имеешь такой файл:

При обращении к файлу /robots.txt сервер будет отдавать клиенту содержимое файла /robots-xYz01Q.php

User-agent: *

Allow: /
Disallow: /admin

Host: http://site.ru
Sitemap: http://site.ru/yandex_sitemap.xml
Sitemap: https://site.ru/google_sitemap.xml

После переноса данных начинай редактировать файл, добавляй проверку по User-agent, чтобы каждому роботу показать, что ты его узнал и показываешь ему информацию, которая предназначена конкретно для него. Для этого тебе необходимо заменить

User-agent: *

на


# Показываем боту Яндекса
User-agent: Yandex
Crawl-delay: 0.5

# Показываем боту MAIL.RU
User-agent: Mail.Ru

# Показываем боту Google
User-agent: Googlebot

# Показываем всем остальным
User-agent: *

Затем тебя интересуют последние две строки:

Sitemap: http://site.ru/yandex_sitemap.xml
Sitemap: https://site.ru/google_sitemap.xml

Заменяй их на следующие:


Sitemap: http://site.ru/yandex_sitemap.xml

Sitemap: https://site.ru/google_sitemap.xml

В итоге у тебя должен получиться файл со следующим содержимым:

скачать готовый шаблон robots-xYz01Q.php


# Показываем боту Яндекса
User-agent: Yandex
Crawl-delay: 0.5

# Показываем боту MAIL.RU
User-agent: Mail.Ru

# Показываем боту Google
User-agent: Googlebot

# Показываем всем остальным
User-agent: *


Allow: /
Disallow: /admin

Host: http://site.ru

Sitemap: http://site.ru/yandex_sitemap.xml

Sitemap: https://site.ru/google_sitemap.xml

Заключение и выводы

Готово! Ты сделал простую, но гибкую систему, которая позволяет определять тех или иных поисковых роботов и отдавать им ту информацию, которую нужно. Чтобы более точно фильтровать ботов, ты можешь изучить основных User-agent’ов, которых использую те или иные поисковые системы (у каждой из них имеется такой список в свободном доступе).

Данный подход можно использовать и для решения других, более сложных задач, связанных с внутренней SEO-оптимизацией твоего сайта.

Бот Яндекса видит твой файл следующим образом:

# Показываем боту Яндекса
User-agent: Yandex
Crawl-delay: 0.5

Allow: /
Disallow: /admin

Host: http://site.ru
Sitemap: http://site.ru/yandex_sitemap.xml

Google-бот видит этот же файл, но уже по-другому:

# Показываем боту Google
User-agent: Googlebot

Allow: /
Disallow: /admin

Host: http://site.ru
Sitemap: https://site.ru/google_sitemap.xml

Бот Mail.Ru видит файл следующим образом:

# Показываем боту MAIL.RU
User-agent: Mail.Ru

Allow: /
Disallow: /admin

Host: http://site.ru
Sitemap: http://site.ru/yandex_sitemap.xml

Бот Рамблера видит так:

# Показываем всем остальным
User-agent: *

Allow: /
Disallow: /admin

Host: http://site.ru
Sitemap: http://site.ru/yandex_sitemap.xml

А остальные боты и твой браузер, видят файл так:

# Показываем всем остальным
User-agent: *

Allow: /
Disallow: /admin

Host: http://site.ru
Sitemap: https://site.ru/google_sitemap.xml

Ключевым моментом твоих манипуляций, является то, что ты без каких-либо ошибок отдаёшь разным ботам необходимый файл с картой сайта из одного и того-же файла. Если ты будешь более любопытным и посмотришь как в твоём браузере будет отображаться файл, который ты создал, то можешь очень удивиться:

Создаём умный robots.txt на PHP — блог Окатьев.Ру

Все данные отображаются в одну строку и прочитать файл становится невозможным, но не для роботов!

В браузере все директивы файла robots.txt сбиваются в «стаю» и становятся едва-ли читаемыми, но не для поисковых роботов!

Создаём умный robots.txt на PHP — блог Окатьев.Ру

Результат проверки файла robots.txt в Яндекс.Вебмастере

Все роботы автоматически переносят каждую директиву на новую строку и прекрасно читают твой файл.

Создаём умный robots.txt на PHP — блог Окатьев.Ру

Результат проверки файла robots.txt в Google Console

Можно смело сказать, что это простое, но эффективное решение, которое необходимо тебе для удобства и универсальности использования, а так же для улучшения индексации твоего сайта и повышения уровня его seofriendly! Благодарю за внимание — все вопросы оставляйте в комментариях. Надеюсь, что помог тебе этим постом!

Оцените статью