Недавно по работе столкнулся с довольно рутинной и нудной задачей – выполнение ТЗ для СЕО-оптимизации сайта. Кто сталкивался с подобными задачами, наверняка, сейчас сморщили гримасу неприязни и физическую боль во всем теле. Да, СЕОшники знают толк в извращениях. Но статья не про продвижение сайтов и не про веселых ребят оптимизаторов, а про один из пунктов ТЗ, который внес немного разнообразия в рабочий процесс и скрасил трудовой час. В одной из задач ТЗ, была поставлена цель, сделать различное содержание файла robots.txt для разных доменов. Домены в свою очередь припаркованы к одному серверу и используют одни и те же файлы. То есть нужно реализовать вывод разной информации при обращении к одному и тому же файлу. Задачка мне показалась интересная и вот, про нее статья.
Разделение robots.txt для каждого домена
Очевидно, что для разного отображения robots.txt , при просмотре с разных доменов, необходимо как-то программно проверять, по какому адресу открыт файл, и выдавать нужный текст. Но как это сделать, если файл текстовый? Можно написать php код прямо в файле и настроить на сервере, чтобы apahce выполнял код, написанный в файлах с расширением txt, я как-то писал подобную статью: как заставить работать php код на html-странице. Но, одно дело, когда код выполняется в html-файлах, и совсем другое, если на сервере будут выполняться текстовые файлы. Это не самая лучшая идея с точки зрения безопасности. Поэтому было решено воспользоваться другим способом – прописать, все для того же apahce, редирект на php-скрипт, при обращении к robots.txt.
Сам редирект можно прописать в файле .htaccess следующим образом:
RewriteEngine On RewriteRule ^robots.txt robots.php [L]
Теперь при обращении к сайту по адресу http://site1.ru/robots.txt, на самом деле вызываться будет скрипт robots.php, хотя в адресной строке это ни как не отобразится. Главное, сам файл robots.txt переименовать или перенести, чтобы он не мешал редиректу.
И теперь все, что осталось, это написать простой php-код определения хоста для подстановки соответствующего содержимого robots.txt. А также нужно не забыть выдать заголовки, в которых будет указан тип данных, чтобы полностью имитировать текстовый файл.
Вот такой тестовый код получился:
// указываем в заголовках, что это текст header('Content-type: text/plain'); // проверяем, какой открыт сайт // и выводим нужный текст robots.txt if($_SERVER['HTTP_HOST'] == "site1.ru"){ echo "User-agent: * \nSitemap: site1.ru/sitemap-1.xml"; }else{ echo "User-agent: * \nSitemap: site2.ru/sitemap-2.xml"; }
Послесловие
Если эту статью читают СЕО-оптимизаторы, то обращаюсь к вам, ребята. Как вы считаете, такой редирект между файлами, при обращении к robots.txt, будет адекватно воспринят поисковыми системами? Если нет, то возможно у вас есть другие идеи и предложения. Буду признателен, присланным мне на почту письмам или ответам в комментариях.
Поисковой системе неважно как утроен движок сайта, ей важно, какие данные он отдает при серфинге этого сайта. Если при обращению к адресу domen/robots.txt будет выдан валидный код соответствующий требованиям к файлам robots.txt то робот примет их к обработке.
В данном случае никакого редиректа нет. Мы запросили данные с http://site1.ru/robots.txt и с http://site1.ru/robots.txt данные получены. Редиректом это могло бы считаться, если бы браузере происходила смена урл-а, а так это просто обычное правило для сервера и поисковая система и все остальные в т.ч., попросту даже не ведают о том, что данные генерятся php-скриптом.
Спасибо за пояснение. Значит метод можно считать рабочим)
Спасибо большое, что сказал что robots.txt нужно переименовать или удалить , помог
вместо основного адреса передать переменную $_SERVER[«SERVER_NAME»]