Sitemap
创建自动生成的Sitemap文件,以供您的 robots.txt
. 这有助于SEO和新内容的发现。 AEM可以生成三种类型的站点地图:不进行任何配置、仅基于查询索引或基于手动站点地图配置。
在不进行任何配置的情况下创建站点地图
如果您不执行任何操作,则会在中看到您的站点地图 sitemap.xml
并在以下位置具有站点地图索引: sitemap.json
. 它将包含所有已发布文档的列表。
如果您从其他类型的Sitemap开始并希望切换到此类型,则必须删除 helix-sitemap.yaml
配置文件 — 在GitHub中手动定义或自动生成 — 并重新索引您的站点。
外部URL中使用的域名
要自定义创建外部URL时使用的域,请添加名为的属性 host
或 cdn.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
定义。