# 网站地图 Sphinx 扩展 [jdillard/sphinx-sitemap](https://github.com/jdillard/sphinx-sitemap) 为你的 Sphinx 文档的 HTML 版本生成多版本和多语言 [sitemaps.org](https://www.sitemaps.org/protocol.html) 兼容的网站地图。 ## 配置 安装: ```sh pip install sphinx-sitemap ``` 添加到 {confval}`extensions`: ```sh extensions = ['sphinx_sitemap'] ``` ### 基础配置 在你的 Sphinx `conf.py` 中设置 {confval}`html_baseurl` 的值为当前文档的 base URL。比如说: ```sh html_baseurl = 'https://my-site.com/docs/' ``` 在 HTML 构建完成后,`sphinx-sitemap` 会输出网站地图的位置: ```sh sitemap.xml was generated for URL https://my-site.com/docs/ in /path/to/_build/sitemap.xml ``` ```{tip} 确保在安装和升级后确认网站地图的准确性。 ``` ## 更改文件名 在 `conf.py` 中设置 {confval}`sitemap_filename` 为需要的文件名,例如: ```sh sitemap_filename = "sitemap.xml" ``` ### 版本配置 对于多版本网站地图,需要为每个版本生成一个网站地图,然后手动将其位置添加到 [网站地图索引文件](https://support.google.com/webmasters/answer/75712?hl=en) 中。 该扩展将查看当前正在构建的版本的 {confval}`version` 配置值,所以要确保该值被设置。 ````{hint} 当使用多个版本时,最好的做法是将所有版本的主题布局中的 canonical URL 设置为该页面的最新版本: ```html ``` ```` ### 多语言配置 对于多语言网站地图,每一种语言/地区生成一个网站地图,然后手动将其位置添加到网站地图索引文件中。 主语言是由 {confval}`language` 配置值设置的。替代语言是由 `sitemap_locales` 选项手动设置的,或者由扩展的 {confval}`locale_dirs` 配置值自动检测的,所以要确保其中一个被设置。 `sitemap_locales` 配置是指定一个在 `sitemap` 中包含的 `locales` 的列表。例如,如果一个第三方扩展添加不支持的语言到 `locale_dirs`,或者允许 `locale` 达到一定的翻译百分比后再公开。例如,如果主要语言是 `zh_CN`,并且指定了 `en` 和 `fr` 的翻译列表,那么 `sitemap` 看起来是这样的: ```xml https://my-site.com/docs/zh_CN/index.html https://my-site.com/docs/zh_CN/about.html ``` 当网站地图的地域性受到限制时: ```python sitemap_locales = ['zh_CN', 'en'] ``` 最终的结果是,每种语言/版本的构建都类似于以下内容: ```xml https://my-site.com/docs/zh_CN/index.html https://my-site.com/docs/zh_CN/about.html ``` 当特殊值设置为 `[None]` 时: ```xml sitemap_locales = [None] ``` 只生成主语言: ```xml https://my-site.com/docs/zh_CN/index.html https://my-site.com/docs/zh_CN/about.html ``` ### 定制 URL 方案 如果同时设置了 {confval}`language` 和 {confval}`version`,默认的 `URL` 格式是 `{version}{lang}{link}`。要改变默认行为,请在 `conf.py` 中设置 {confval}`sitemap_url_scheme` 的值为所需格式。比如说: ```python sitemap_url_scheme = "{lang}{version}subdir/{link}" ``` ```{note} 该扩展目前是 opinionated,因为它自动给语言和版本值加上尾部的斜线。你也可以从方案中省略所需行为的值。 ``` ## 充分发挥网站地图的作用 1. 在源目录中添加一个 `robots.txt` 文件,其中包含一个指向网站地图或网站地图索引的链接。比如说: ``` User-agent: * Sitemap: https://my-site.com/docs/sitemap.xml ``` 然后,将 `robots.txt` 添加到 {confval}`html_extra_path` 配置值中: ```python html_extra_path = ['robots.txt'] ``` 2. 将网站地图或网站地图索引提交给适当的搜索引擎工具。