Sitemap

创建自动生成的Sitemap文件,以供您的 robots.txt. 这有助于SEO和新内容的发现。 AEM可以生成三种类型的站点地图:不进行任何配置、仅基于查询索引或基于手动站点地图配置。

在不进行任何配置的情况下创建站点地图

如果您不执行任何操作,则会在中看到您的站点地图 sitemap.xml 并在以下位置具有站点地图索引: sitemap.json. 它将包含所有已发布文档的列表。

如果您从其他类型的Sitemap开始并希望切换到此类型,则必须删除 helix-sitemap.yaml 配置文件 — 在GitHub中手动定义或自动生成 — 并重新索引您的站点。

外部URL中使用的域名

要自定义创建外部URL时使用的域,请添加名为的属性 hostcdn.prod.host 在您的项目配置中(已命名) .helix/config 使用Google驱动器作为后端或 .helix/config.xlsx ,并预览该文件以激活它。

基于索引生成Sitemap配置

请参阅文档 索引 了解有关索引的更多信息。 要根据索引生成Sitemap配置,请确保已设置了初始查询索引,如该处所述。 这将在以下位置生成站点地图:

https://<branch>--<repo>--<owner>.hlx.page/sitemap.xml

以及位于以下位置的站点地图配置:

https://<branch>--<repo>--<owner>.hlx.page/helix-sitemap.yaml

建议您创建 sitemap-index.xml 该文件引用了您的所有站点地图,并将其作为项目代码的一部分保留在github存储库中。 这样,便可以在项目扩展时轻松添加新站点地图。

手动设置Sitemap配置

如果您需要比生成的Sitemap配置文件更多的自定义,则可以复制其内容并将其粘贴到名为的文件中 helix-sitemap.yaml 在项目的根文件夹中。

注意: 使用手动配置的索引和Sitemap时(例如,您的代码存储库包含helix-query.yaml和helix-sitemap.yaml文件),索引定义必须包含robots属性,以确保Sitemap排除具有以下特征的页面 robots: noindex 元数据。 使用自动生成的索引定义时,只需遵循中的建议 索引文档 因此,这些页面将从索引中排除。

以下部分包含支持的站点地图类型。

简单站点地图

以下是简单的 helix-sitemap.yaml. 它假定一个包含所有需要显示在站点地图中的页面的索引。

 sitemaps:
   example:
     source: /query-index.json
     destination: /sitemap-en.xml

如果您希望将上次修改日期包含在站点地图的URL中,请添加 lastmod 属性,其中包含配置的格式。

 sitemaps:
   example:
     source: /query-index.json
     destination: /sitemap-en.xml
     lastmod: YYYY-MM-DD

多个Sitemap

通常每个站点的部分和/或每个国家或语言都有Sitemap。 AEM支持站点地图,包括相应的 hreflang 引用。 在以下示例中,我们假设索引和Sitemaps XML文件之间存在一对一映射。

 sitemaps:
   example:
     languages:
       en:
         source: /en/query-index.json
         destination: /sitemap-en.xml
         hreflang: en
       fr:
         source: /fr/query-index.json
         destination: /sitemap-fr.xml
         hreflang: fr
         alternate: /fr/{path}

如果英语和法语部分中有两个共享相同后缀的页面,则它们是相关的,例如,如果您有一个页面 /welcome 在英语部分和页面中 /fr/welcome 在法文部分中,将生成的 /sitemap-en.xml 将如下所示:

<url>
  <loc>https://wwww.mysite.com/welcome</loc>
  <xhtml:link rel="alternate" hreflang="en" href="https://wwww.mysite.com/welcome"/>
  <xhtml:link rel="alternate" hreflang="fr" href="https://wwww.mysite.com/fr/welcome"/>
</url>

类似条目将用于 /sitemap-fr.xml.

手动指定主要语言

在某些情况下,您可能具有页面的替代版本,但无法使用通用后缀来标识它们,这可能是因为您移植了不应更改其路径的旧版网站。 在这种情况下,您可以指定 primary-language-url 在文档的元数据中。

假设我们的主要语言是英语,我们有一个页面 /welcome 在英语部分和 /fr/bienvenu 在法语部分,后者是前者的替代版本。

首先,我们将此信息添加到文档的 /fr/bienvenu 在其元数据中:

这也可以添加到全局视图 metadata 工作表,如中所示 批量元数据.

然后,我们添加一个索引属性 primary-language-url 法国指数:

 primary-language-url:
   select: head > meta[name="primary-language-url"]
   value: attribute(el, "content")

最后,我们重新发布法语页面,并且 重建站点地图.

指定默认语言

另一个常见要求是为使用多种语言的站点地图指定默认语言。 这可以通过添加属性来实现 default 在站点地图中:

 sitemaps:
   example:
     default: en
     languages:
       en:
         source: /en/query-index.json
         destination: /sitemap-en.xml
         hreflang: en
       fr:
         source: /fr/query-index.json
         destination: /sitemap-fr.xml
         hreflang: fr
         alternate: /fr/{path}

在生成的站点地图中,英语子树中的所有条目将有一个带有hreflang的额外替代条目 x-default.

为一个子树指定多个凸缘

有时,需要将多个分支映射到一个语言子树,例如,假定我们希望在生成的Sitemap中显示以下内容:

<url>
 <loc>https://myhost/la/page</loc>
 <xhtml:link rel="alternate" hreflang="es-VE" href="https://myhost/la/page"/>
 <xhtml:link rel="alternate" hreflang="es-SV" href="https://myhost/la/page"/>
 <xhtml:link rel="alternate" hreflang="es-PA" href="https://myhost/la/page"/>
</url>

Sitemap源中的每个页面应该只显示一次,但具有多个与之关联的替代凸缘。 要实现此目的,您应该在 hreflang 属性:

 sitemaps:
   example:
     languages:
       la:
         source: /la/query-index.json
         destination: /sitemap-la.xml
         hreflang:
           - es-VE
           - es-SV
           - es-PA

聚合到一个Sitemap中的多个索引

在某些情况下,与碎片化的小站点地图相比,单个较大的站点地图会更容易,特别是因为每个站点可以提交到搜索引擎的站点地图存在限制。

以下示例说明如何将多个单独的索引聚合到单个站点地图中。

 sitemaps:
   example:
     languages:
       dk:
         source: /dk/query-index.json
         destination: /sitemap.xml
         hreflang: dk
         alternate: /dk/{path}
       no:
         source: /no/query-index.json
         destination: /sitemap.xml
         hreflang: no
         alternate: /no/{path}

使用相同的目标,可以将多个小型站点地图组合到一个大型站点地图中。

包含其他站点地图作为输入

在混合方案中,站点地图中的所有语言并非都在AEM中进行管理,您可以通过将XML路径指定为源来包含其他语言树中的站点地图,如下所示:

sitemaps:
   example:
     languages:
       en:
         source: /en/query-index.json
         destination: /sitemaps/sitemap-en.xml
         hreflang: en
       fr:
         source: https://www.mysite.com/legacy/sitemap-fr.xml
         destination: /sitemaps/sitemap-fr.xml
         hreflang: fr
         alternate: /fr/{path}

在本例中,我们使用外部法国站点地图来计算所有站点地图位置。 AEM将通过以下方式确定英语Sitemap URL的替代项:使用解构外部Sitemap中的法语对应项 alternate 定义。

recommendation-more-help
10a6ce9d-c5c5-48d9-8ce1-9797d2f0f3ec