Для эффективного 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_gen.php - со следующим содержанием (скрипт обрабатывает существующие файлы карты сайта и генерирует на их основе динамическую карту сайта):
<?php
function sitemap_gen($site_url){
$sitemaps = glob($_SERVER['DOCUMENT_ROOT'].'/sitemap*.xml');
foreach ($sitemaps as $sitemap) {
$error = [];
$new_path = $_SERVER["DOCUMENT_ROOT"].'/'.str_replace('.xml', '.php', basename($sitemap));
$dyn_sitemapContent = '<?'.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;
$sitemapContent = file_get_contents($sitemap);
if (!$sitemapContent){
$error[basename($sitemap)] = 'Файл не найден или пустой.';
}
// замены
$search = Array(
$site_url,
'http:',
'https:',
);
$replace = Array(
'<?=$host?>',
'<?=$http?>:',
'<?=$http?>:'
);
$sitemapContent = str_replace($search, $replace, $sitemapContent);
$sitemapContent = preg_replace('/(\<\?xml[^\>]+\>)/i', "echo '$1';?>".PHP_EOL, $sitemapContent);
if (basename($sitemap) == 'sitemap.xml') {
$sitemapContent = str_replace('.xml', '.php', $sitemapContent);
}
$dyn_sitemapContent .= $sitemapContent;
if (!file_put_contents($new_path, $dyn_sitemapContent)){
$error[basename($new_path)] = 'Файл не удалось сохранить.';
} else {
unlink($sitemap);
}
}
return count($error) > 0 ? $error : 'Динамическая карта сайта сгенерирована';
}
print_r(sitemap_gen('адрес_вашего_сайта_без_http'));
?>
Теперь необходимо сгенерировать файлы sitemap, для этого админке сайта переходим в Маркетинг - Поисковая оптимизация - Настройка Sitemap.xml. Добавляем sitemap для сайта, настраиваем условия формирования sitemap, сохраняем и обязательно необходимо Запустить генерацию файлов sitemap.
Так же рекомендуется отключить в настройках карты опцию Добавить правило в robots.txt после генерации.
После генерации карты сайта необходимо запустить скрип создания динамической для этого нужно просто перейти по ссылке http://ваш-сайт.ру/sitemap_gen.php. Скрип сгенерирует в корне сайта файл с динамической картой сайта sitemap.php ( Внимание! Каждый раз после генерации карты сайта через в Настройках sitemap.xml необходимо запускать скрипт для генерации динамической карты сайта ).
Теперь необходимо настроить редирект на созданные нами файлы robots.php и sitemap.php, для того чтобы они открывались вместо оригинальных файлов robots.txt и sitemap.xml. Для этого в корне сайта откроем файл .htaccess и добавим в него следующий код:
RewriteRule ^robots\.txt$ /robots.php [L]
RewriteRule ^sitemap\.xml$ /sitemap.php [L]
Чтобы корректно работали редиректы в .htaccess файлы robots.txt и sitemap.xml должны быть удалены.
На этом создание динамических robots.txt и sitemap.xml закончено.