Задавать имя файла для robots.txt

Рейтинг: 6.0157  
На голосовании
Предложил Кирсанов Анатолий 13.02.2014 20:23:35

Задавать имя файла для robots.txt

В новом модуле поискового продвижения есть возможность редактировать robots.txt.

Увы нельзя задать имя полученному файлу.

Это нормально, когда сайты в Битрикс имеют отдельные папки (через DOCUMENT_ROOT или SITE_DIR). Но бывает ситуации, когда папки для ряда сайтов общие - получаем общий набор файлов для сайтов.

В итоге сайтов несколько, а robots.txt у них один и нельзя сделать их разными (это удобно для указания на sitemap - его имя, к счастью, можно в настройках указать).

Более подробно в блоге по новым решениям SEO. Цель - нормально поддержать работу с региональными сайтами.

Добавлено по комментариям: Отдавать разные версии robots.txt в этой ситуации можно средствами nginx. Главное в этой идее не второй шаг (я привел в пример неэффективный способ отдачи средствами PHP), а первый - сама возможность сохранить различные версии robots.txt для сайтов в такой конфигурации.

Добавлено после осмотра исходников модуля seo 14.5.0 (18.04.2014): Улучшений нет никаких. Имя robots.txt вбито в константе \Bitrix\Seo\RobotsFile::ROBOTS_FILE_NAME и ничего с этим не поделать ни с помощью событий (их нет), ни с помощью глубокой кастомизации (я имею в виду создание своего класса унаследовав от стандартного). Функционал редактирования robots.txt на сайтах с одной общей папкой сейчас неупотребим.

Рейтинг: 0  
Зайцев Артемий 13.02.2014 21:02:18
Хорошая идея:

С первого раза не понял, сформулирована ужасно. Переведу:

Обычно делают robots.txt. Но можно создать свой файл robots.php, который бы открывался через обработку адресов по адресу http://мой сайт/robots.txt

В модуле SEO нужна опция: "путь к настоящему robots.txt". Иначе клиент лезет в SEO, видит, что файла не существует, ругается и создает свой.
Рейтинг: -3.2763  
Кирсанов Анатолий 13.02.2014 21:16:55
путь к настоящему robots.txt
Если это поможет решению вопроса, пусть называется как угодно.

Вот что нужно:

Имеем два сайта - s1 и s2. Имеем два robots.txt, которые создаем из админки - robots_s1.txt и robots_s2.txt
Их имена и нужно указать в админке, чтобы она не перетирала общий robots.txt.

Да, если эта настройка будет, то админка еще и ругаться не будет, если не увидит в корне сайта robots.txt. Но эта проблема существует минут 15 до того момента, пока не написан PHP скрипт для подключение реального текста:

<?
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);

require $_SERVER["DOCUMENT_ROOT"] . '/bitrix/modules/main/include/prolog_before.php';

include 'robots_'.SITE_ID.'.txt';

require $_SERVER["DOCUMENT_ROOT"] . '/bitrix/modules/main/include/epilog_after.php';
?> 

Вот этот PHP скрипт и будет выдавать реальный текст robots.txt для текущего сайта. И создан реальный текст будет средствами админки, а не ручками. Ручками создается только этот скрипт (да, robots.txt нужно сделать PHP скриптом).

Добавлено: Да, можно попробовать не делать robots.txt скриптом, а настроить обработку адресов Битрикс на обычный PHP скрипт. Об этом я забыл. У этого варианта есть свое достоинство - не нужно соваться в настройки Apache или nginx.
Рейтинг: 0.5695  
Коваленко Алексей 17.02.2014 20:24:56
Рейтинг: 0.1425  
Кирсанов Анатолий 17.02.2014 20:46:54
Да, robots.txt можно настроить через nginx.

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

Да, опасности использования PHP в любом виде, для отдачи robots.txt я не усмотрел. Так поправил бы на первом же сайте. Дело не в этом, а в том, что сейчас средствами админки это не сделать ни правильно (nginx), ни ужасно (PHP).