Формирование карты сайта для сайта с регионами на поддоменах

Если у Вас сайт имеет структуру msk.САЙТ.ru, rnd.САЙТ.ru и т.д. и при этом структура поддоменов одинаковая, Вы можете создать карту сайта только для одного поддомена и для остальных формировать налету с помощью приведенного здесь скрипта:

Создайте в корневой папке вашего сайта файл .htaccess или добавьте в существующий содержащий следующие строки:

RewriteEngine on
RewriteRule sitemap.xml /sm.php [L,QSA]

Сделайте это для всех доменов кроме msk.* (можно для всех) Создайте файл карты сайта для домена msk.ВАШ_САЙТ.ru с помощью генератора карты сайта и сохраните его в sitemap.xml

Создайте файл sm.php:

<?php
// Данный файл заменяет в карте сайта все msk. на город из текущего вызова
// переопределите все обращения к sitemap.xml на данный файл, например:
// RewriteRule sitemap.xml /sm.php [L,QSA]

$fil=$_SERVER['DOCUMENT_ROOT'].'/sitemap.xml';
$str = file_get_contents($fil);
if(isset($_SERVER['HTTP_HOST'])){
    $SERVER_NAME=str_replace(':443', '', $_SERVER['HTTP_HOST']);
    $SERVER_NAME=preg_replace('/^https?:\/\//', '', $SERVER_NAME);
    $city=strtolower(substr(0,strstr($SERVER_NAME, '.')));
    if($city=='сайт')$city=''; // в этой строке укажите ваш домен до точки и без города
}else{
    $city='';
}
if($city!=='msk'){
    $str=str_replace('msk.',$city.'.',$str);
}
header('Content-Type: text/xml; charset=utf-8');
echo $str;
?>

.