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

  • 2018-10-16
  • Дмитрий М.
  • 2189

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

<p> Для эффективного SEO продвижения мультидоменных сайтов необходимо, чтобы для каждого поддомена были свои <b>robots.txt</b> и <b>sitemap.xml. </b>В том случаи если структура поддоменов одинаковая, т.е. если речь идёт об интернет-магазине, то можно использовать способ описанный ниже... </p> <h3>Как настроить robots.txt и sitemap.xml для мультидоменных сайтов?</h3> <p> Рассмотрим настройку <b>robots.txt</b> и <b>sitemap.xml</b> для мультидоменных сайтом на примере <b>CMS Bitrix</b>. Будем полагать что мультисайтовость настроена таким образом, что все поддомены смотрят в одну папку на сервере а контент формируется динамически в зависимости от выбранного поддомена (т.е файловая структура всех сайтов одинаковая ). </p> <p> В корневой папке сайта создадим файл <b>robots.php</b> со следующим содержанием ( robots будет иметь стандартный набор правил и ограничений для CMS Bitrix): </p> <pre class="line-numbers"> <code class="language-php"> &lt;?php $host = $_SERVER["HTTP_HOST"]; $host = preg_replace("/\:\d+/is", "", $host); if (isset($_SERVER["HTTPS"]) &amp;&amp; $_SERVER["HTTPS"] == "on"){ $http = "https"; } else{ $http = "http"; } header("Content-Type: text/plain");?&gt; 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: /*&amp;print= Disallow: /*print_course= Disallow: /*?action= Disallow: /*&amp;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: &lt;?=$http?&gt;://&lt;?=$host.PHP_EOL;?&gt; Sitemap: &lt;?=$http?&gt;://&lt;?=$host;?&gt;/sitemap.xml </code></pre> <p> Так же создадим в корневой папке файл sitemap.php - со следующим содержанием (скрипт обрабатывает существующие файлы карты сайта и генерирует на их основе динамическую карту сайта): </p> <pre class="line-numbers"> <code class="language-php">&lt;?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 = '&lt;?'.PHP_EOL.'$host = preg_replace("/\:\d+/is", "", $_SERVER["HTTP_HOST"]);'.PHP_EOL. 'if (isset($_SERVER["HTTPS"]) &amp;&amp; $_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( '&lt;?=\$host?&gt;', '&lt;?=$http?&gt;:', '&lt;?=$http?&gt;:' ); $sitemap = str_replace($search, $replace, $sitemap); $sitemap = preg_replace('/(\&lt;\?xml[^\&gt;]+\&gt;)/i', "echo '$1';?&gt;".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'); ?&gt;</code></pre> <p> Теперь необходимо сгенерировать файлы <b>sitemap</b>, для этого админке сайта переходим в <b><i>Маркетинг - Поисковая оптимизация - Настройка Sitemap.xml.</i></b> Добавляем <b>sitemap </b>для сайта, настраиваем условия формирования <b>sitemap</b>, сохраняем и обязательно необходимо <b>Запустить </b>генерацию файлов <b>sitemap.</b> </p> <div class="picture"> <img width="1024" alt="map_sett.png" src="/upload/medialibrary/8d9/8d99e1724f153fd87ad1b3fb857f4eef.png" height="310" title="map_sett.png"> </div> <p> После генерации карты сайта необходимо запустить скрип создания динамической для этого нужно просто перейти по ссылке <a href="http://ваш-сайт.ру">http://ваш-сайт.ру/sitemap.php</a>. Скрип сгенерирует в корне сайта файл с динамической картой сайта <b>sitemap_dyn.php</b> ( <b><i>Внимание! Каждый раз после генерации карты сайта через в Настройках sitemap.xml необходимо запускать скрипт для генерации динамической карты сайта</i> ).</b> </p> <p> Теперь необходимо настроить редирект на созданные нами файлы <b>robots.php</b> и <b>sitemap_dyn.php, </b>для того чтобы они открывались вместо оригинальных файлов <b>robots.txt</b> и <b>sitemap.xml. </b>Для этого в корне сайта откроем файл .htaccess и добавим в него следующий код: </p> <pre class="line-numbers"> <code class="language-php">RewriteRule ^robots\.txt$ /robots.php [L] RewriteRule ^sitemap\.xml$ /sitemap_dyn.php [L]</code></pre> <p> На этом создание динамических <b>robots.txt</b> и <b>sitemap.xml</b> закончено. </p>

11.06.2019 11:42:17

84679-2.jpg

84679-2.jpg

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

Для эффективного SEO продвижения мультидоменных сайтов необходимо, чтобы для каждого поддомена были свои 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.

map_sett.png

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



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

Возврат к списку

Другие статьи