Динамический Robots.txt, на хостинге не работает конструкция RewriteRule ^robots.txt robots.php
Когда есть необходимость создания динамического robots.txt, например для поддоменов, первое, что приходит в голову это подмена robots.txt на robots.php через .htacsses, в том случае, если мы работает с тем же Open Server работает конструкция в htaccess:
RewriteRule ^robots.txt robots.php
Но, на большинстве хостингов такая конструкция может не сработать потому, что статические файлы вроде robots.txt обрабатываются nginx
Ответ техподдержки хостинга Beget
Вся статика с наших серверов отдается веб-сервером nginx, который отдает ее очень быстро, поэтому редирект для robots.txt
работать не будет.
В вашем случае есть два варианта:
Мы можем направить статику на Apache, но в таком случае возможны потери производительности и увеличение нагрузки на аккаунте. Тогда редирект на статические файлы будет также работать.
Либо более хитрый ход, когда нужно убрать файл
robots.txt
, чтобы его не мог найти и отдатьnginx
и тогда запрос будет передан на Apache, где можно настроить правило редиректа на нужный файл.
Шаг 1 : удаляем robots.txt / для любой системы управления
Удаляем robots.txt с корневой папки Вашего сайта, тогда запросы идут к нашим скриптам php.
Решение на Kohana
Route::set( robots , robots.txt ) ->defaults
(
array( controller => MainPage , app => front , action => robots )
);
То беж простая переадресация запроса на контроллер MainPage и действие action_robots , а там уже пишем php скрипт какой нужен.
Решение Битрикс / файл urlrewrite.php
Идем в файл urlrewrite.php в корне Вашего сайта и добавляем следующие директивы.
Метод подходит для модуля: INTEC: Мультирегиональность
<?php
$arUrlRewrite=array (
/*для robots.txt*/
2 => /*здесь можно поставить самое большое или малое число среди других директив */
array (
'CONDITION' => '#^/robots.txt#',
'RULE' => '',
'ID' => NULL,
'PATH' => '/robots.php',/*теперь по адресу вашсайт.ru/robots.txt сервер будет обрабатывать robots.php */
'SORT' => 100,
),
/*для sitemap.xml*/
3 =>
array (
'CONDITION' => '#^/sitemap.xml#',
'RULE' => '',
'ID' => NULL,
'PATH' => '/sitemap.php',
'SORT' => 100,
)
);