情况如此,我有一个可以从多个域访问的网站,比如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?
不知怎的,我怀疑这会有效,因此我请求专家对这个问题有所了解:)
感谢
答案 0 :(得分:3)
如果您使用 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]
当使用 NginX 作为网络服务器时(以 yourdomain1.tld
和 yourdomain2.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/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中的每个域提交适当的站点地图。提交的内容将显示演出成功。