阅读TheDocs robots.txt 和 sitemap.xml

问题描述 投票:0回答:2

ReadTheDocs 会自动为项目生成

robots.txt
sitemap.xml
。每次我部署项目的新次要版本(例如
4.1.10
)时,我都会隐藏以前的次要版本(例如
4.1.9
)。 ReadTheDocs 将所有版本的条目添加到
sitemap.xml
,但隐藏版本也会添加到
robots.txt
。结果是,向 Google Search Console 提交的站点地图此时会导致“提交的 URL 被 robots.txt 阻止”错误,因为之前的站点地图条目现在被新生成的
robots.txt
阻止了。

ReadTheDocs 为每个版本生成一个站点地图 URL,因此我们有一个像这样的条目

4.1.9
,例如:

<url>
   <loc>https://pyngrok.readthedocs.io/en/4.1.9/</loc>
   <lastmod>2020-08-12T18:57:47.140663+00:00</lastmod>
   <changefreq>monthly</changefreq>
   <priority>0.7</priority>
</url>

4.1.10
发布并且之前的小版本被隐藏时,新生成的
robots.txt
得到:

Disallow: /en/4.1.9/ # Hidden version

我相信这

Disallow
就是导致Google爬虫抛出错误的原因。

实际上,我想要的只是

sitemap.xml
latest
develop
,我不太关心每个版本都被抓取。但我能够配置的所有内容,
据我从 ReadTheDocs 文档中了解到的
,都是静态的 stable
我想要的是发布我自己的静态

robots.txt

,而不是使用自动生成的。有什么办法可以做到这一点吗?

    

robots.txt read-the-docs google-search-console xml-sitemap
2个回答
2
投票

如上所述和文档中提到的,虽然 ReadTheDocs 允许您覆盖自动生成的

sitemap.xml

并发布您自己的,但您不能使用

robots.txt
。不清楚为什么。无论如何,您可以简单地发布一个
不同
sitemap.xml,我将我的命名为
sitemap.xml
,然后告诉您的
sitemap-index.xml
指向您的自定义站点地图。
对于我的自定义

robots.txt

,我只放置我关心的页面而不是生成的版本(因为

sitemap-index.xml
stable
确实是我希望搜索引擎抓取的内容,而不是版本化页面):
latest

我创建了自己的
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>https://pyngrok.readthedocs.io/en/stable/</loc> <changefreq>weekly</changefreq> <priority>1</priority> </url> <url> <loc>https://pyngrok.readthedocs.io/en/latest/</loc> <changefreq>daily</changefreq> <priority>0.9</priority> </url> <url> <loc>https://pyngrok.readthedocs.io/en/develop/</loc> <changefreq>monthly</changefreq> <priority>0.1</priority> </url> </urlset>

,告诉Google不要抓取除我的主分支之外的任何内容

并且
指向我的自定义robots.txt
sitemap-index.xml

我将这两个文件放在 
User-agent: * Disallow: / Allow: /en/stable Allow: /en/latest Allow: /en/develop Sitemap: https://pyngrok.readthedocs.io/en/latest/sitemap-index.xml

下,并在我的 Sphinx

/docs/_html
文件(位于
conf.py
中)中添加:
/docs

这也显示在存储库中,
供参考

ReadTheDocs 重建必要的分支后,将

html_extra_path = ["_html"]

提供给

Google Search Console
而不是默认分支,要求 Google 重新处理您的 /en/latest/sitemap-index.xml,不仅会解决抓取错误,Google 还会正确索引该网站隐藏以前的小版本。
    


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.