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