高级URL配置

AEM CIF核心组 件提供了高级配置,用于自定义产品和类别页面的URL。许多实施都将自定义这些URL以用于搜索引擎优化(SEO)。 以下视频详细介绍了如何配置UrlProvider服务和Sling映射的功能,以自定义产品和类别页面的URL。

配置

要根据SEO要求和需要配置UrlProvider服务,项目必须为“CIF URL提供程序配置”配置提供OSGI配置,并按照以下所述配置服务。

注意

请参见下文的Venia Reference store项目包含用于演示产品和类别页面自定义URL使用情况的示例配置。

产品页面URL模板

这会使用以下属性配置产品页面的URL:

  • 产品URL模板:通过一组占位符定义URL的格式。默认值为{{page}}.{{url_key}}.html#{{variant_sku}},最终生成URL,例如/content/venia/us/en/products/product-page.chaz-kangeroo-hoodie.html#MH01-M-Orange,其中
    • {{page}} 替换为 /content/venia/us/en/products/product-page
    • {{url_key}} 已被Magento的 url_key 产品属性替换,此处 chaz-kangeroo-hoodie
    • {{variant_sku}} 已被替换为当前选定的变体,此处 MH01-M-Orange
  • 产品标识符位置:定义用于获取产品数据的标识符的位置。默认值为SELECTOR,另一个可能值为SUFFIX。 对于上一个示例URL,这表示将使用标识符chaz-kangeroo-hoodie获取产品数据。
  • 产品标识符类型:定义获取产品数据时要使用的标识符类型。默认值为URL_KEY,另一个可能值为SKU。 对于上一个示例URL,这意味着将使用MagentoGraphQL过滤器(如filter:{url_key:{eq:"chaz-kangeroo-hoodie"}})获取产品数据。

产品列表页面URL模板

这会使用以下属性配置类别或产品列表页面的URL:

  • 类别URL模板:通过一组占位符定义URL的格式。默认值为{{page}}.{{id}}.html,最终生成URL,例如/content/venia/us/en/products/category-page.3.html,其中
    • {{page}} 替换为 /content/venia/us/en/products/category-page
    • {{id}} 已被Magento的 id 类别属性替换,此处 3
  • 类别标识符位置:定义用于获取产品数据的标识符的位置。默认值为SELECTOR,另一个可能值为SUFFIX。 对于上一个示例URL,这表示将使用标识符3获取产品数据。
  • 类别标识符类型:定义获取产品数据时要使用的标识符类型。默认值和当前仅支持的值为ID。 对于上一个示例URL,这意味着将使用MagentoGraphQL过滤器(如category(id:3))获取类别数据。

只要组件使用UrlProvider设置了相应的数据,就可以为每个模板添加自定义属性。 例如,检查ProductListItemImpl类的代码,以了解如何实现此功能。

也可以将UrlProvider服务替换为完全自定义的OSGi服务。 在这种情况下,必须实施UrlProvider接口,并使用更高的服务等级进行注册,以替换默认实施。

与Sling映射组合

除了UrlProvider之外,还可以配置Sling映射,以便重写和处理URL。 AEM Archetype项目还提供了一个示例配置,用于为端口4503(发布)和80(调度程序)配置一些Sling映射。

与AEM Dispatcher结合使用

还可以通过将AEM Dispatcher HTTP服务器与mod_rewrite模块结合使用来实现URL重写。 AEM项目原型提供引用AEM Dispatcher配置,该配置已包含生成大小的基本重写规则

示例

Venia引用存储项目包含用于演示产品和类别页面自定义URL使用情况的示例配置。 这允许每个项目根据其SEO需求为产品和类别页面设置单个URL模式。 将使用如上所述的CIF UrlProvider和Sling映射的组合。

注意

此配置必须使用项目使用的外部域进行调整。 Sling映射基于主机名和域运行。 因此,此配置默认处于禁用状态,且必须在部署之前启用。 为此,请根据使用的域名,重命名ui.content/src/main/content/jcr_root/etc/map.publish/https中的Sling映射hostname.adobeaemcloud.com文件夹,并通过将resource.resolver.map.location="/etc/map.publish"添加到项目的JcrResourceResolver配置来启用此配置。

其他资源

在此页面上