跳到主要内容

Functional Specification

用户希望被搜索引擎发现和索引的任何页面都应列在 XML 站点地图中。

应为每种内容类型构建单独的 XML 站点地图。大型站点地图可以拆分为独立的、分页的文件。

每个 XML 站点地图都应列在XML 站点地图索引中。

内容类型

应为以下每种内容类型创建 XML 站点地图,前提是该内容类型为公开且包含有效成员。

  • 文章、页面和自定义文章类型
  • 作者(至少拥有一篇已发布、公开、可索引文章的用户)
  • 自定义文章类型
  • 分类法
  • 多部分文章/页面的分页状态

除了单独的 XML 站点地图外,还应创建一个XML 站点地图索引,其中引用所有这些站点地图。

排除项与空站点地图

以下情况应导致页面被排除在(相应的)XML 站点地图之外:

  • 不符合搜索引擎索引条件的文章/页面(即任何导致页面通过元标签或 HTTP 头输出元机器人 noindex 指令的情况)
  • 设置了手动规范 URL 且该 URL 与其默认规范值相同的文章/页面
  • 私有或受密码保护的页面
  • 错误页面/状态/模板
  • 搜索结果页面
  • 任何类型归档的分页视图(例如,/blog/page/2/)
  • 非公开的归档和分类法
  • 当整个站点设置为“私有”时(例如,在 WordPress 中,当 搜索引擎可见性 选项设置为“阻止搜索引擎索引此站点”时)的所有 URL

其中一些情况可能导致 XML 站点地图(或 XML 站点地图索引)为空。这是预期且允许的行为。

对不存在的站点地图 URL 的请求应返回正常的 404 行为。

内容

XML 站点地图索引

索引文件为每个独立的 XML 站点地图包含一个 <sitemap> 条目,每个条目都有 loc 和 lastmod 属性。例如:

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://www.example.com/author-sitemap.xml</loc>
<lastmod>2019-10-21T12:37:01+00:00</lastmod>
</sitemap>
{...}
</sitemapindex>
  • loc 属性应引用相关 XML 站点地图的绝对 URL
  • (可选) lastmod 属性应反映相关 XML 站点地图中最新的 lastmod 值

如果不可用,可选属性可以省略。

URL 与重定向

该文件应可通过 /sitemap_index.xml 访问。对 /sitemap.xml 的请求应重定向至此地址。

XML 站点地图

每个站点地图为每个页面包含一个 <url> 条目,由 loclastmodimage:image 属性组成。例如:

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd http://www.google.com/schemas/sitemap-image/1.1 http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.example.com/blog/example-post/</loc>
<lastmod>2018-04-21T10:00:12+00:00</lastmod>
<image:image>
<image:loc>https://www.example.com/example-image.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.example.com/another-example-image.jpg</image:loc>
</image:image>
</url>
{...}
</urlset>
  • loc 属性应引用文章/页面/对象的规范 URL(永久链接)
  • (可选) lastmod 属性应引用对象最后更新的时间。对于归档/类似页面,这应反映归档成员最后更新的时间(例如,对于特定分类,应反映该分类中最后发布文章的时间)
  • (可选) 应为页面中/与页面关联的每个图像输出一个 image:image 属性,包含:
    • 一个 loc 属性(引用图像的绝对 URL)

如果不可用,可选属性可以省略。

限制与分页

默认情况下,每个站点地图最多可包含 1,000 个项目。如果某个内容类型的项目超过 1,000 个,则会生成额外的站点地图(最多 50,000 个)来容纳溢出的项目。

网址与重定向

每个站点地图的 URL 应按以下格式构建:{{type}}-sitemap{{n}}.xml,其中:

  • {{type}} 为内容类型(例如:page)
  • {{n}} 为分页状态(系列中的第一页忽略此参数)。

例如:post-sitemap.xmlpost-sitemap2.xmlcustom_taxonomy_name-sitemap.xml

{{n}}10 时,对站点地图的请求应触发 301 重定向以移除 {{n}}(例如:对 post-sitemap1.xmlpost-sitemap0.xml 的请求应重定向至 post-sitemap.xml)。

XSL 样式表

站点地图索引和单个站点地图引用 XSL 文件,该文件为页面提供布局和样式配置。

索引控制

XML 站点地图无需被搜索引擎索引即可被读取或解析。因此,所有 XML 站点地图响应都应返回一个值为 noindex, followx-robots-tag HTTP 标头。

其他场景

视频站点地图

我们的 WordPress 视频 SEO 插件 会添加一个额外的 视频站点地图(位于 video-sitemap.xml,并包含在站点地图索引中),其中包含网站内容中托管/引用的每个视频的信息。

对于每个包含视频的页面,站点地图包含一个 <url> 包装器,其中包含 <loc> 值(页面的规范 URL / 永久链接),以及页面中每个视频的 <video:video> 容器。例如:

<url>
<loc>https://www.example.com/example-page/</loc>
<video:video>
<video:title><![CDATA[Example Video]]></video:title>
<video:publication_date>2015-12-15T15:36:03+00:00</video:publication_date>
<video:description><![CDATA[Example video description]]></video:description>
<video:player_loc>https://www.youtube-nocookie.com/v/abc123</video:player_loc>
<video:thumbnail_loc>https://www.example.com/video-thumbnail.jpg</video:thumbnail_loc>
<video:duration>98</video:duration>
<video:view_count>367</video:view_count>
<video:width>640</video:width>
<video:height>390</video:height>
<video:tag>Example tag</video:tag>
<video:tag>Another example tag</video:tag>
<video:family_friendly>yes</video:family_friendly>
<video:uploader info="https://www.example.com/example-profile-page">Example Person</video:uploader>
</video:video>
</url>
{…}
</urlset>
  • title 是视频的名称
  • description 是视频的说明文字,回退到视频的任何可用描述,再回退到视频的 URL(例如,视频的公开 YouTube URL)
  • player_loc 是指向视频播放器的 URL
  • thumbnail_loc 是视频缩略图图像的 URL
  • (可选) publication date 是视频“发布”(或上传)的时间戳
  • (可选) duration 是以秒为单位的持续时间
  • (可选) view_count 是观看次数
  • (可选) widthheight 是嵌入视频的尺寸(以像素为单位)
  • (可选) tag 是与嵌入视频的页面/文章相关联的一系列标签
  • (可选) family_friendly 是一个布尔值,在视频嵌入 UI 中配置
  • (可选) uploader 是上传视频的人员姓名,带有可选的 info 属性,用于引用个人资料/主页

视频 XML 站点地图使用专用的 XSL 文件。

新闻站点地图

我们的 WordPress 新闻 SEO 插件 会添加一个额外的 新闻站点地图(位于 news-sitemap.xml,并包含在站点地图索引中),其中包含网站上发布的新闻文章信息。

新闻站点地图应仅引用过去 48 小时内发布或修改的文章。

该站点地图包含一个 <url> 包装器,其中包含 <loc> 值(页面的规范 URL / 永久链接),以及每个新闻文章的 <news:news> 容器。例如:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>http://www.example.com/example-page/</loc>
<news:news>
<news:publication>
<news:name>Example site name</news:name>
<news:language>en</news:language>
</news:publication>
<news:publication_date>2019-11-15T09:59:38+00:00</news:publication_date>
<news:title><![CDATA[Example post name]]></news:title>
</news:news>
</url>
{…}
</urlset>
  • publication.name网站标题(例如,"Yoast")
  • publication.language 是文章的语言代码(采用 ISO 639 格式)
  • publication_dateW3C 格式 的日期
  • title 是文章的帖子名称
  • (可选) 应为页面中/与页面关联的每个图像输出一个 image:image 属性,包含:
    • 一个 loc 属性(引用图像的绝对 URL)

新闻 XML 站点地图使用专用的 XSL 文件。