问题描述
我的网站有两个子域:static.example.com
和 www.example.com
。由于我的网络服务器的性质,我最好使用 static.example.com
提供静态内容(css、js 文件和站点地图)。
我已将 Sitemap: https://static.example.com/sitemap.xml
放入 robots.txt
的 www.example.com
。但是,我需要在不同的子目录下拥有多个站点地图索引,其中包含数十万到数百万个网址。
例如,我在主网站中有以下子目录:
www.example.com/articles
www.example.com/questions
www.example.com/videos
...
因此,我可以这样构建我的 sitemap.xml 吗:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://static.example.com/sitemaps/article.xml</loc>
</sitemap>
<sitemap>
<loc>https://static.example.com/sitemaps/question.xml</loc>
</sitemap>
<sitemap>
<loc>https://static.example.com/sitemaps/video.xml</loc>
</sitemap>
</sitemapindex>
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://static.example.com/sitemaps/article/1-10000.txt</loc>
<lastmod>2021-04-22T19:50:00+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://static.example.com/sitemaps/article/10001-20000.txt</loc>
<lastmod>2021-04-22T19:50:00+00:00</lastmod>
</sitemap>
</sitemapindex>
在每个 .txt 文件中,我将列出指向主网站的网址。例如
https://www.example.com/article/1
https://www.example.com/article/5
https://www.example.com/article/8
...
这个结构好吗?交叉提交解释 here 明确允许我将主站点地图放在不同的域下,对于 txt url 列表,它告诉我将它们放在最高级别的目录中。没有看到它提到在不同的子域下提供 url 列表或站点地图索引。
我可以通过这种方式提供站点地图和网址列表吗?
解决方法
默认情况下这是行不通的。 sitemaps protocol 声明(请参阅“站点地图文件位置 "):
请注意,这意味着站点地图中列出的所有网址都必须使用相同的协议(在本例中为 http)并与站点地图驻留在同一主机上。例如,如果站点地图位于 http://www.example.com/sitemap.xml,则它不能包含来自 http://subdomain.example.com 的 URL。
但是,有一些方法可以让它发挥作用。例如,对于 Google,只要所有子域都在 Search Console 中得到验证,它就会起作用(请参阅详细信息 here)。更一般地说,您需要编辑 robots.txt
文件以证明您拥有所有这些主机(即使它们只是子域)。您可以查看同一 sitemaps protocol 的“站点地图和交叉提交”部分以了解详细信息。