Дата публикации : 2018.11.17
Автор: Виноградов Александр

Динамический 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 работать не будет.

В вашем случае есть два варианта:

  1. Мы можем направить статику на Apache, но в таком случае возможны потери производительности и увеличение нагрузки на аккаунте. Тогда редирект на статические файлы будет также работать.

  2. Либо более хитрый ход, когда нужно убрать файл 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*/  
  
=> /*здесь можно поставить самое большое или малое число среди других директив */
  
array (
    
'CONDITION' => '#^/robots.txt#',
    
'RULE' => '',
    
'ID' => NULL,
    
'PATH' => '/robots.php',/*теперь по адресу вашсайт.ru/robots.txt сервер будет обрабатывать robots.php */
    
'SORT' => 100,
  ),
    
   
/*для sitemap.xml*/ 
  
=> 
  array (
    
'CONDITION' => '#^/sitemap.xml#',
    
'RULE' => '',
    
'ID' => NULL,
    
'PATH' => '/sitemap.php',
    
'SORT' => 100,
  )
    

    
);

Комментарии
Наверх страницы