Карта сайта для нескольких доменов одного сайта

Вот ситуация, у меня есть веб-сайт, к которому можно получить доступ из нескольких доменов, скажем, www.domain1.com, www.domain2.net, www.domain3.com. домены обращаются к одной и той же кодовой базе, но в зависимости от домена загружаются разные CSS, графика и т. д.

все работает нормально, но теперь мой вопрос, как мне поступить с sitemap.xml? я написал файл sitemap.xml для домена по умолчанию (www.domain1.com), но как быть, когда к сайту обращаются из других доменов? содержимое файла sitemap.xml будет содержать неправильный домен.

Я прочитал, что могу добавить несколько файлов Sitemap в robots.txt, значит ли это, что я могу, например, создать sitemap-domain2.net.xml и sitemap-domain3.com.xml (содержащий ссылки с соответствующими доменами) и просто добавить их в robots.txt?

почему-то у меня есть сомнения, что это сработает, поэтому я обращаюсь к вам, эксперты, чтобы пролить свет на эту тему:)

Спасибо

6 ответов

Решение

Вы должны использовать серверный код для отправки правильной карты сайта на основе имени домена для запросов /sitemap.xml

Правила перезаписи Apache для запросов /robots.txt

Если вы используете Apache в качестве веб-сервера, вы можете создать каталог с именем robots и поместите robots.txt для каждого веб-сайта, который вы запускаете на этом VHOST, используя правила перезаписи в вашем файле .htaccess следующим образом:

      # URL Rewrite solution for robots.txt for multidomains on single docroot
RewriteCond %{REQUEST_FILENAME} !-d # not an existing dir
RewriteCond %{REQUEST_FILENAME} !-f # not an existing file
RewriteCond robots/%{HTTP_HOST}.txt -f # and the specific robots file exists
RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [L]

Сопоставление NginX для запросов /robots.txt

При использовании NginX в качестве веб-сервера (при использовании yourdomain1.tld а также yourdomain2.tldв качестве примеров доменов), вы можете достичь той же цели, что и сообщение выше, с помощью следующей условной переменной (поместите ее вне директивы сервера):

      map $host $robots_file {
    default /robots/default.txt;
    yourdomain1.tld /robots/yourdomain1.tld.txt;
    yourdomain2.tld /robots/yourdomain2.tld.txt;
}

Таким образом, вы можете использовать эту переменную в try_files заявление внутри директивы вашего сервера:

      location = /robots.txt {
    try_files /robots/$robots_file =404;
}

Содержимое /robots/*.txt

После настройки псевдонимов для специфичных для домена файлов robots.txt добавьте карту сайта в каждый из файлов роботов (например: /robots/yourdomain1.tld.txt), используя этот синтаксис внизу файла:

      # Sitemap for this specific domain
Sitemap: https://yourdomain1.tld/sitemaps/yourdomain1.tld.xml

Сделайте это для всех ваших доменов, и все будет готово!

У меня аналогичная ситуация с проектом, над которым я работаю прямо сейчас. И у Google Search Central есть следующий ответ:

Если у вас несколько веб-сайтов, вы можете упростить процесс создания и отправки карт сайта, создав одну или несколько карт сайта, которые включают URL-адреса для всех ваших проверенных сайтов, и сохранив карты сайта в одном месте. Все сайты должны быть подтверждены в Search Console.

Таким образом, кажется, что до тех пор, пока вы добавили различные домены в качестве своих свойств в Google Search Console, по крайней мере, Google будет знать, что делать с остальными, даже если вы загружаете карты сайта для других доменов только в один из своих свойств в Консоль поиска Google.

В моем случае я затем использую код на стороне сервера для создания карт сайта, где все динамические страницы с английским контентом в конечном итоге получают местоположение в моем домене .io, а мои страницы с немецким контентом в конечном итоге имеют местоположение в домене .de:

      <url>
    <loc>https://www.mydomain.io/page/some-english-content</loc>
    <changefreq>weekly</changefreq>
</url>
<url>
    <loc>https://www.mydomain.de/page/some-german-content</loc>
    <changefreq>weekly</changefreq>
</url>

А потом Google сделает все остальное. См. Документы.

Вы должны убедиться, что URL-адреса в каждом XML-файле сайта соответствуют домену / поддомену. Но, если вы действительно хотите, вы можете разместить все карты сайта в одном домене с помощью " Sitemaps & Cross Submits"

Самый простой способ, который я нашел, - использовать генератор карты сайта XML для создания карты сайта для каждого имени домена. Поместите оба файла /sitemap.xml в корневой каталог ваших доменов или субдоменов. Перейдите в Google Search и создайте отдельные свойства для каждого доменного имени. Отправьте соответствующий файл Sitemap для каждого домена в Search Console. В заявке будет сказано: "Успех".

Я не эксперт в этом, но у меня похожая ситуация

для моей ситуации, что у меня есть один домен, но с 3 поддоменами

так что происходит, что каждый из поддоменов содержат sitemap.xml

но так как мой случай был другой каталог для каждого из поддоменов

но я почти уверен, что sitemap.xml можно указать для каждого домена.

Другие вопросы по тегам