同一站点的多个域的站点地图

时间:2011-06-21 14:12:58

标签: seo sitemap multiple-domains

情况如此,我有一个可以从多个域访问的网站,比如www.domain1.com,www.domain2.net,www.domain3.com。域访问完全相同的代码库,但根据域,加载不同的CSS,图形等。

一切正常,但现在我的问题是如何处理sitemap.xml? 我为默认域(www.domain1.com)编写了sitemap.xml,但是当从其他域访问该站点时呢? sitemap.xml的内容将包含错误的域。

我读到我可以将多个站点地图文件添加到robots.txt,这是否意味着我可以创建 sitemap-domain2.net.xml sitemap-domain3.com .xml (包含匹配域的链接),只需将它们添加到robots.txt?

不知怎的,我怀疑这会有效,因此我请求专家对这个问题有所了解:)

感谢

5 个答案:

答案 0 :(得分:3)

Apache 重写 /robots.txt 请求的规则

如果您使用 Apache 作为网络服务器,您可以创建一个名为 robots 的目录,并通过在您的 .htaccess 文件中使用重写规则为您在该 VHOST 上运行的每个网站放置一个 robots.txt,如下所示:

# 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]

/robots.txt 请求的 NginX 映射

当使用 NginX 作为网络服务器时(以 yourdomain1.tldyourdomain2.tld 作为示例域),您可以使用以下条件变量实现与上面帖子相同的目标(将此 放在外面< /strong> 您的服务器指令):

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

为您拥有的所有域执行此操作,然后就设置好了!

答案 1 :(得分:1)

您应该使用服务器端代码根据/sitemap.xml的请求的域名发送正确的站点地图

答案 2 :(得分:0)

我不是这方面的专家,但我有类似的情况

对于我的情况是我有一个域但有3个子域

所以会发生的是每个子域都包含sitemap.xml

但是因为我的案例是每个子域的不同目录

但我非常确定可以为每个域中的哪个域指定sitemap.xml。

答案 3 :(得分:0)

您必须确保每个XML sitemap match within domain/subdomain中的网址。但是,如果您真的想要,您可以使用“Sitemaps & Cross Submits”来托管一个域上的所有站点地图

答案 4 :(得分:0)

我发现最简单的方法是使用XML网站地图生成器为每个域名创建网站地图。 将/sitemap.xml都放在域或子域的根目录中。 转到Google搜索并为每个域名创建单独的属性。 向Search Console中的每个域提交适当的站点地图。提交的内容将显示演出成功。