Часто бывает так, что карта должна отличаться только доменом, при этом доменов могут быть сотни и они могут каждый день добавляться или удаляться. Следить за этим вручную крайне непросто, да и не нужно.
Создаем и настраиваем обычную карту сайта на основной домен, прописываем ей путь /sitemap/sitemap, как показано на скрине.
Заходим на фтп, и удаляем из корня все файлы по маске sitemap*.xml (если их не удалить, в некоторых случаях может не работать).
Внимание!В данной статье рассматривается работа с кодом. Перед тем как что-то делать, сделайте полный бекап сайта, по ходу работы не забывайте делать бекап файлов которые правите.
Создаем файл sitemapController.php в корне сайта, меняем первую строку на Ваш домен, прописанный в настройках карты сайта:
<?
$mainDomain = 'https://solverweb.ru'; //Заменить на свой
$host = htmlspecialchars($_SERVER['SERVER_NAME']);
if(strpos($_SERVER["REQUEST_URI"],'../') !== false) die('');
if ((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") || (isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) && $_SERVER["HTTP_X_FORWARDED_PROTO"] == "https") || (isset($_SERVER["HTTP_X_FORWARDED_SCHEME"]) && $_SERVER["HTTP_X_FORWARDED_SCHEME"] == "https")){
$protocol = "https";
}
else{
$protocol = "http";
}
$curDomain = $protocol."://".$host;
$sitemapsPath = '/sitemaps/www';
$path = $_SERVER['DOCUMENT_ROOT'] . $sitemapsPath . $_SERVER["REQUEST_URI"];
if (file_exists($path))
{
header('Content-Type: text/xml; charset=utf-8');
$current = file_get_contents($path);
$current = str_ireplace($mainDomain, $curDomain, $current);
echo $current;
}else {
include $_SERVER['DOCUMENT_ROOT']. "/404.php";
}
Если у Вас Apache, вносите в .htaccess после
RewriteEngine On
следующее:
RewriteRule ^sitemap(.*).xml$ /sitemapController.php [L]
Если у Вас nginx, вносите в server {} (пожалуйста, убедитесь что у Вас хватает компетенции, если нет, пишите нам, не нужно ломать сервер)location / {
rewrite ^/sitemap(.*).xml$ /sitemapController.php break;
}
На этом все. Если разобраться не получается, не отчаивайтесь, пишите в
поддержку, мы поможем.