Замена robots txt для поддоменов в htaccess

M5
На сайте с 18.01.2011
Offline
110
8191

Добрый день. Пытаюсь сделать персональные файлы Robots.txt для поддоменов.

Вариант чтобы по адресу https://subdomain1.site.ru/robots.txt отдавалось содержимое другого файла https://subdomain1.site.ru/robots-subdomain1.txt не получается...

примеры того что пробывал - это с три десятка подобных конструкций из рунета и нетолько... Надеюсь на помощь. Спасибо.

RewriteCond %{HTTP_HOST} ^([a-zA-Z\-]+).site\-example\.com$ [NC]
RewriteRule ^robots.txt robots-%1.txt [L]

RewriteCond %{HTTP_HOST} ^app.website.com$
RewriteRule ^robots\.txt$ robots-subdomain.txt
S
На сайте с 30.09.2016
Offline
469
#1

Или надо

RewriteBase /

или /robots-subdomain.txt

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
ХЗ
На сайте с 31.08.2008
Offline
155
#2

Не нужно делать сотни разных robots файлов, достаточно одного, пример robots.php:

<?php
//код на php
$domain = $_SERVER['HTTP_HOST'];
?>
User-agent: Yandex
Host: https://<?=$_SERVER['HTTP_HOST']?>
Sitemap: https://<?=$domain?>/sitemap.xml

в htaccess

RewriteRule ^robots.txt$ robots.php
M5
На сайте с 18.01.2011
Offline
110
#3
Sitealert:
Или надо
RewriteBase /
или /robots-subdomain.txt

Спасибо за пояснения. Буду разбираться... все равно сделаю

---------- Добавлено 06.10.2017 в 11:02 ----------

Х.З.:
Не нужно делать сотни разных robots файлов, достаточно одного, пример robots.php:
<?php

//код на php
$domain = $_SERVER['HTTP_HOST'];
?>
User-agent: Yandex
Host: https://<?=$_SERVER['HTTP_HOST']?>
Sitemap: https://<?=$domain?>/sitemap.xml

в htaccess
RewriteRule ^robots.txt$ robots.php

Мне тоже этот метод понравился, просто почему то не редиректит с robots txt на Роботс php

Возможно причина в других редиректах, они то работают всегда. А с файликом и так и так пробывал, и на отдельные персональные файлы отправлять, и на автоматом создавать ничего.

RewriteEngine On

RewriteBase /

RewriteRule ^photo/$ /gallery/ [R=301,L]

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.* # этот блок позволяет существовать robots txt по двум адресам, www.site.ru/robots.txt и просто site.ru/robots.txt ?
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]
M
На сайте с 04.12.2013
Offline
223
#4

mazafaka5, вам надо развести в том числе и роботс основного домена, потому что в нек. случаях наличие этого файла в корне будет делать все ваши попытки как-то использовать .htaccess абсолютно бессмысленными.


Или надо
RewriteBase /
или /robots-subdomain.txt

Корень является базой по умолчанию, но в общем автор написанного прав.

А почему не хотите использовать самый естественный вариант, т.е. развести поддомены по отдельным сайтам/каталогам?

---------- Добавлено 06.10.2017 в 12:26 ----------

Х.З., текстовый контент-тайп лучше выдавать. В $_SERVER['HTTP_HOST'] может передаваться и корневой домен – сделайте хотя бы «трим точки справа». Точки в маске нужно экранировать (robots\.txt).

---------- Добавлено 06.10.2017 в 12:28 ----------

Host: https://<?=$_SERVER['HTTP_HOST']?>
Забыли, что переприсваивали имя хоста др. переменной? :)
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
ХЗ
На сайте с 31.08.2008
Offline
155
#5
mazafaka5:
просто почему то не редиректит с robots txt на Роботс php

вот так точно будет выдавать содержимое robots.php при запросе robots.txt, только эти записи в файле .htaccess:

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ robots.php
M5
На сайте с 18.01.2011
Offline
110
#6
miketomlin:
mazafaka5, вам надо развести в том числе и роботс основного домена, потому что в нек. случаях наличие этого файла в корне будет делать все ваши попытки как-то использовать .htaccess абсолютно бессмысленными.

Корень является базой по умолчанию, но в общем автор написанного прав.

А почему не хотите использовать самый естественный вариант, т.е. развести поддомены по отдельным сайтам/каталогам?

Я попроще хотел бы конечное, но modx cms + webhost1 - на отдельную папку c поддомена нельзя направиться, нет будет подсайт работать.

---------- Добавлено 06.10.2017 в 12:48 ----------

miketomlin:
mazafaka5, вам надо развести в том числе и роботс основного домена, потому что в нек. ---------- Добавлено 06.10.2017 в 12:28 ----------

Host: https://<?=$_SERVER['HTTP_HOST']?>
Забыли, что переприсваивали имя хоста др. переменной? :)

Копипастил.... Не понимая. И все еще плохо понимаю, буду тщательней вникать позже седня.

---------- Добавлено 06.10.2017 в 12:48 ----------

miketomlin:

---------- Добавлено 06.10.2017 в 12:26 ----------

Х.З., текстовый контент-тайп лучше выдавать. В $_SERVER['HTTP_HOST'] может передаваться и корневой домен – сделайте хотя бы «трим точки справа». Точки в маске нужно экранировать (robots\.txt).

Подарите пожалуйтса пример строк кода, я понял но правильно сделать первый раз трудно

---------- Добавлено 06.10.2017 в 12:48 ----------

Х.З.:
вот так точно будет выдавать содержимое robots.php при запросе robots.txt, только эти записи в файле .htaccess:

RewriteEngine on

RewriteBase /
RewriteRule ^robots.txt$ robots.php

Может быть и отдает..... Но я не вижу изменений...

прямо так вверху файла .htaccess :

# MODX supports Friendly URLs via this .htaccess file. You must serve web

# pages via Apache with mod_rewrite to use this functionality, and you must
# change the file name from ht.access to .htaccess.
#
# Make sure RewriteBase points to the directory where you installed MODX.
# E.g., "/modx" if your installation is in a "modx" subdirectory.
#
# You may choose to make your URLs non-case-sensitive by adding a NC directive
# to your rule: RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ robots.php

Но при заходе на Site.ru/robots.txt текст по строкам разбит

User-agent: *

Disallow:

User-agent: Yandex
Host: https://site.ru

Sitemap: https://site.ru/sitemap.xml

а при заходе на Site.ru/robots.php в одну строку:

User-agent: Yandex Host: https://site.ru Sitemap: https://site.ru/sitemap.xml
M
На сайте с 04.12.2013
Offline
223
#7
mazafaka5:
Копипастил.... Не понимая. И все еще плохо понимаю, буду тщательней вникать позже седня.

Это уже было не вам адресовано. См. выше, к кому я в послед. раз обращался.

Подарите пожалуйтса пример строк кода, я понял но правильно сделать первый раз трудно

Наверно генерить роботс тут все же не лучший вариант, тем более что я нигде не увидел, что файлы должны быть однотипными, подпадающими под опред. шаблон. В любом случае тут тоже применимо мое самое первое замечание. При наличии статик роботса в корне вся эта баланда может не работать. Делайте не только для поддоменов, но и для осн. домена.

---------- Добавлено 06.10.2017 в 15:11 ----------

P.S. Рерайт делается примерно так (выписывать реальный код лень, сорри):

Условие «есть файл с именем, зависящим от имени хоста»

Правило «делаем рерайт в этот файл»

M5
На сайте с 18.01.2011
Offline
110
#8

Простите за то отвлекаю) но что-то не идет дело. Редиректа нет, удалял для теста robots.txt из корня, и пробывал следующие конструкции в htaccess :

RewriteCond %{HTTP_HOST} ^site.ru$

RewriteRule ^robots.txt$ /robots-main.txt [L]
RewriteCond %{HTTP_HOST} ^subdomain.site.ru$
RewriteRule ^robots.txt$ /robots-subdomains.txt [L]

RewriteCond %{HTTP_HOST} ^subdomain.site.ru$

RewriteRule ^robots.txt$ /robots-subdomains.txt [L]

RewriteEngine on


RewriteCond %{HTTP_HOST} ^subdomain.site.ru [NC]
RewriteRule ^robots\.txt /robots_chelyabinsk.txt [NC,L,R=301]

RewriteBase /


RewriteCond %{HTTP_HOST} chelyabinsk\.site\.ru/.*robots\.txt$
Rewriterule ^robots.txt$ robots_chelyabinsk.txt [R=301,NC,L]

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий