/ Настройка robots.txt и sitemap.xml для мультидоменного сайта

Настройка robots.txt и sitemap.xml для мультидоменного сайта

16 окт 2018
Дмитрий М.
9530

Для эффективного 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.

map_sett.png

Так же рекомендуется отключить в настройках карты опцию Добавить правило в 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 закончено.

Статья была полезна? Поблагодарите автора.

Самые читаемые
#1С Битрикс, #Bitrix CMS, #.htaccess, #настройка редиректов
4 авг 2019
#bitrix:news, #сортировка, #фильтрация, #bitrix:catalog, #catalog.section, #news.list
16 дек 2020
#Хлебные крошки, #1С Битрикс, #Bitrix CMS, #bitrix:breadcrumbs, #component_epilog, #кэширование
1 окт 2018
#bitrix, #свойства элементов, #обработчик событий, #OnBeforeIBlockElementUpdate, #OnIBlockElementSetPropertyValues
21 июл 2020
#Bitrix CMS, #breadcrumb, #bitrix:breadcrumbs, #хлебные крошки, #настройка
13 фев 2019
#ресайз изображений, #1С Битрикс, #Bitrix CMS
3 мар 2019
#bitrix, #robots.txt, #sitemap.xml, #поддомены, #мультисайтовость
16 окт 2018
#bitrix, #bitrix:catalog.section, #скидки, #товары со скидкой, #страница скидок, #страница со скидками
4 окт 2018
#bitrix, #пользовательские свойства, #тип свойств, #привязка к элементам
27 ноя 2019