Настройка robots.txt и sitemap.xml для мультидоменного сайта
Для эффективного SEO продвижения мультидоменных сайтов необходимо, чтобы для каждого поддомена были свои robots.txt и sitemap.xml. В том случаи если структура поддоменов одинаковая, т.е. если речь идёт об интернет-магазине, то можно использовать способ описанный ниже...
Как настроить robots.txt и sitemap.xml для мультидоменных сайтов?
Рассмотрим настройку robots.txt и sitemap.xml для мультидоменных сайтом на примере CMS Bitrix. Будем полагать что мультисайтовость настроена таким образом, что все поддомены смотрят в одну папку на сервере а контент формируется динамически в зависимости от выбранного поддомена (т.е файловая структура всех сайтов одинаковая ).
В корневой папке сайта создадим файл robots.php со следующим содержанием ( robots будет иметь стандартный набор правил и ограничений для CMS Bitrix):
<?php
$host = $_SERVER["HTTP_HOST"];
$host = preg_replace("/\:\d+/is", "", $host);
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on"){
$http = "https";
}
else{
$http = "http";
}
header("Content-Type: text/plain");?>
User-Agent: *
Disallow: */index.php
Disallow: /bitrix/
Disallow: /*show_include_exec_time=
Disallow: /*show_page_exec_time=
Disallow: /*show_sql_stat=
Disallow: /*bitrix_include_areas=
Disallow: /*clear_cache=
Disallow: /*clear_cache_session=
Disallow: /*ADD_TO_COMPARE_LIST
Disallow: /*ORDER_BY
Disallow: /*PAGEN
Disallow: /*?print=
Disallow: /*?list_style=
Disallow: /*?sort=
Disallow: /*?set_filter=
Disallow: /*?arrFilter*
Disallow: /*?order=
Disallow: /*&print=
Disallow: /*print_course=
Disallow: /*?action=
Disallow: /*&action=
Disallow: /*register=
Disallow: /*forgot_password=
Disallow: /*change_password=
Disallow: /*login=
Disallow: /*logout=
Disallow: /*auth=
Disallow: /*backurl=
Disallow: /*back_url=
Disallow: /*BACKURL=
Disallow: /*BACK_URL=
Disallow: /*back_url_admin=
Disallow: /*?utm_source=
Disallow: /order/
Disallow: /*download*
Disallow: /test.php
Allow: /bitrix/components/
Allow: /bitrix/cache/
Allow: /bitrix/js/
Allow: /bitrix/templates/
Allow: /bitrix/panel/
Host: <?=$http?>://<?=$host.PHP_EOL;?>
Sitemap: <?=$http?>://<?=$host;?>/sitemap.xml
Так же создадим в корневой папке файл sitemap.php - со следующим содержанием (скрипт обрабатывает существующие файлы карты сайта и генерирует на их основе динамическую карту сайта):
<?php
function sitemap_gen($sitemap_path, $site_url, $new_path){
if (substr($sitemap_path, 0, 1) != '/'){
$sitemap_path = '/'.$sitemap_path;
}
$sitemap_path = $_SERVER["DOCUMENT_ROOT"].$sitemap_path;
if (substr($new_path, 0, 1) != '/'){
$new_path = '/'.$new_path;
}
$new_path = $_SERVER["DOCUMENT_ROOT"].$new_path;
$dyn_sitemap = '<?'.PHP_EOL.'$host = preg_replace("/\:\d+/is", "", $_SERVER["HTTP_HOST"]);'.PHP_EOL.
'if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on"){'.PHP_EOL.
' $http = "https";'.PHP_EOL.
'}'.PHP_EOL.
'else{'.PHP_EOL.
' $http = "http";'.PHP_EOL.
'}'.PHP_EOL.
'header("Content-Type: text/xml");'.PHP_EOL;
$sitemap = file_get_contents($sitemap_path);
if (!$sitemap){
return false;
}
// замены
$search = Array(
$site_url,
'http:',
'https:',
);
$replace = Array(
'<?=$host?>',
'<?=$http?>:',
'<?=$http?>:'
);
$sitemap = str_replace($search, $replace, $sitemap);
$sitemap = preg_replace('/(\<\?xml[^\>]+\>)/i', "echo '$1';?>".PHP_EOL, $sitemap);
$dyn_sitemap .= $sitemap;
if (!file_put_contents($new_path, $dyn_sitemap)){
return false;
}
return true;
}
sitemap_gen('sitemap_000.xml', 'адрес_вашего_сайта_без_http', 'sitemap_dyn.php');
?>
Теперь необходимо сгенерировать файлы sitemap, для этого админке сайта переходим в Маркетинг - Поисковая оптимизация - Настройка Sitemap.xml. Добавляем sitemap для сайта, настраиваем условия формирования sitemap, сохраняем и обязательно необходимо Запустить генерацию файлов sitemap.

После генерации карты сайта необходимо запустить скрип создания динамической для этого нужно просто перейти по ссылке http://ваш-сайт.ру/sitemap.php. Скрип сгенерирует в корне сайта файл с динамической картой сайта sitemap_dyn.php ( Внимание! Каждый раз после генерации карты сайта через в Настройках sitemap.xml необходимо запускать скрипт для генерации динамической карты сайта ).
Теперь необходимо настроить редирект на созданные нами файлы robots.php и sitemap_dyn.php, для того чтобы они открывались вместо оригинальных файлов robots.txt и sitemap.xml. Для этого в корне сайта откроем файл .htaccess и добавим в него следующий код:
RewriteRule ^robots\.txt$ /robots.php [L]
RewriteRule ^sitemap\.xml$ /sitemap_dyn.php [L]
На этом создание динамических robots.txt и sitemap.xml закончено.