Почему rewriterule для robots.txt не работает?

5 ответов

Проблема такая: есть несколько поддоменов(msk.*, spb.*, ekb.* и т.п.), которые фактически ссылаются на одну папку(корень). Нужно чтобы для каждого поддомена по запросу robots.txt выводилось свое содержимое, файлы с соответствующим содержимым лежат в корне, например robots_ekb.txt. Перепробовал уже сотни вариаций написания rewriterule, ничего не помогает, последний вариант такой:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ekb.site.ru [NC]
RewriteRule ^robots\.txt robots_ekb.txt [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

Где-то прочитал что в httpd.conf отключена может быть обработка txt файла, как ее включить если у меня обычный битрикс-хостинг на timeweb, неужели больше никаких вариантов? Люди добрые, помогите!)

Ответы (5)

Лавр Иванов +128
25.07.2016 17:25
Статичный контент на Timeweb отдается веб-сервером nginx.
Файл robots.txt относится к статичному контенту.

В данном случае нужно либо пытаться придумать хитрые правила перенаправления чтобы реализовать желаемое либо пытаться искать решения со стороны 1C-Битрикс.

Сегодня вечерком попробую прикинь что можно предложить для достижения нужного результата, но вряд ли смогу порадовать готовым решением. Если это критично для работы вашего сайта, можно VDSку попробовать настроить под свои нужны со своими настройками.
Свернуть ответы
Спасибо за ответ! служба поддержки таймвеб посоветовала довольно элегантное решение: удалить вообще оригинальный robots.txt - в этом случае запросы начинают обрабатываться апачем, ну а дальше дело техники)
Иван Абрамов +2
26.07.2016 11:16
Вариант хороший. А он поможет вам добиться желаемого результата?
Да, поможет, просто для этого варианта нужно не только на каждый поддомен прописать отдельное правило в .htaccess, но и для основного домена тоже.

Т.е. основной robots.txt переименовывается, например, в robots_main.txt, и для него прописывается основной правило:

RewriteCond %{HTTP_HOST} ^site .ru$ [NC]
RewriteRule ^robots.txt$ robots_main.txt [L]

И так же для каждого региона отдельный robots_<регион>.txt, и отдельное правило:

RewriteCond %{HTTP_HOST} ^<регион>.site .ru$ [NC]
RewriteRule ^robots.txt$ robots_<регион>.txt [L]

(site .ru без пробела)
Однако вариант от Александра Попова не работает, nginx не выполняет эту работу.

сделали в htaccess:
RewriteRule ^robots.txt$ robots_for_domain.php [L]

а в файле:
<?header("Content-Type:text/plain");?>
текст robots.txt
и Host: http://<?=$_SERVER['HTTP_HOST']?>

Похожие вопросы

Alex
275

1C Bitrix и REST API

Всем привет. Нужна некоторая консультация от разработчиков битрикса) Собираемся делать нативное приложение и нужно сделать так чтобы заказы из приложения и сайта были в одном месте. Может ли битрикс выступать в роли бэка в этом плане? Обмен будет через...
vvv123
302

Помочь настроить сайт на Joomla после установки SSL

Здравствуйте, нужна помощь в настройке корректной работы сайта после установки ssl. 
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Войти в Комьюнити
Регистрация в Комьюнити
Восстановление пароля