您在此处:
URL 规则 URL 语法
可以通过三种 URL 语法定义网店 URL 在 B2C Commerce 中的外观:标准 B2C Commerce URL 语法、SEO URL 语法或弃用的搜索友好型 URL 语法。使用的语法取决于启用的 Business Manager 模块。
- 如果没有指定 URL 语法,则使用 B2C Commerce 标准 URL 语法。
- 如果启用 URL规则模块,则使用为 URL规则模块配置的语法。请参阅配置网店 URL 偏好。
- 如果启用弃用的 SEO 支持模块(取消选中 URL 规则首选项),则使用为 SEO 支持模块配置的语法。请参阅启用搜索友好型 URL。
本页面说明 URL 规则语法,并描述该语法与标准语法和 SEO 标准的区别。
站点 URL 格式
URL 格式定义如下:
在 B2C Commerce 内,可以配置并自定义 URL 端点。
生产环境 (Production) 实例 URL
在生产环境 (Production) 实例,B2C Commerce URL 如下所示:
| 示例类型 | URL |
|---|---|
| Pipeline URL | |
| 分类 URL | |
| 产品 URL | |
| 自定义 URL | |
沙盒 (Sandbox)、准备环境 (Staging)、开发环境 (Development) 实例 URL
可以在准备环境 (Staging)、开发环境 (Development) 或 Sandbox 实例上定义别名 (your.instance.hostname.example.com)。URL 将 your.instance.hostname.example.com 作为主机名,后跟前缀 /s,然后是站点名称。实际端点与生产环境 (Production) 实例的端点完全相同。这允许多站点零售商查看其每个站点的配置端点。
如果在别名文件中使用了像 example.com 这样的自定义主机名,则 URL 不需要路径中带有 /s 和站点 ID 的模式,并且会创建一个短 URL,例如 example.com/cart。
基本语法提示
要了解如何评估并解析请求的 URL,请参阅 URL 评估与解析。
URL 可以被解析,即使 URL 分大小写。
如果 URL 中包含以下未编码字符,则可以解析 URL,因为 B2C Commerce 会自动对其进行编码:
, @ ) ! $ ' ( ~URL 规则使用空格只是为了增加可读性。规则元素周围缺少空格对您的 URL 规则是否能验证没有影响。但是,逗号非常重要,因为它分隔元素。缺少逗号可以决定您的规则是否能验证。
定义 URL 规则时,您要清楚指定属性源时的环境。对于分类规则,源是分类,因此您可以使用如下规则:
[ [ constant, const ], /, [ category-path, [ attribute, ID ], - ]]在此规则内,您定义每个 URL 使用的常量和分类路径。此规则内的属性是分类的属性,因此是分类 ID。
但是,在产品规则中,源是产品,因此您必须如以下规则所示,将分类声明为 category-path 的源:
[ [ constant, const ], /, [ category, [ category-path, [ attribute, ID ], - ] ]]如果定义以下产品规则,则常量 const111 按常量使用,并且分类按您在分类规则中的指定使用。
[ [ constant, const111 ], /, [ category] ]定义产品规则时,需要特别小心,因为任何分类的使用都会按您在分类规则中定义的进行。例如,如果指定分类规则的结果是/const222/electronics/,然后使用 [ [ constant, const111 ], /, [ category] ]定义产品规则,则结果如下:
/const111/const222/electronics/008884303996.html 多值属性
为了生成产品、网页内容、分类和文件夹的 URL 而配置 SEO 规则时,可以按与单值属性类似的方式,使用 Enum-of-String 和 Set-of-String 类型指定多值属性。在以下示例中,color 是一个 Enum-of-String 产品属性。
[ [ category, [ attribute, displayName ] ], /, [ attribute, custom.color], /, [ attribute, name ] ] 多值属性的所有值都被包括在 URL 中。这些值用空格、或定义的空格替换字符(例如“-”)连接。本地化显示值用于枚举值,除非没有定义显示值,那样的话则使用此值。
根据上述规则生成的示例 URL 如下:
/mens-shoes/black-yellow/spring-sneaker/12345.html 分类 URL
可以为分类页面启用 URL 规则站点 URL,并且商家可以通过“URL 规则”页面的“目录 URL”选项卡配置分类 URL 端点。
禁用所有 SEO 模块的标准 B2C Commerce 分类 URL 遵循以下格式:
www.sitegenesis.com/on/demandware.store/Sites-SiteGenesis-Site/default/Search-Show?cgid=mens-clothing-shorts启用了弃用 SEO 支持模块的分类 URL,如以下格式所示:
www.sitegenesis.com/mens-clothing-shorts,default,sc.html 启用 URL 规则模块的分类 URL 遵循以下格式:
[ category-path, [ attribute, displayName ], - ] 该规则显示分类的路径和显示名称,并使用破折号作为分类名称的空格分隔符:
www.sitegenesis.com/mens-clothing-shorts要定义分类 URL 的网页内容,您可以组合多个元素,并指定元素之间的分隔符。
[ [attribute_1], del , [attribute2], del , [attribute_3] ]该规则最多可以容纳五个元素。分类元素有四种类型:attributes、constant、 category-path 和 category-parent。(请参阅以下每种元素类型的规定。)
示例:
[ [constant, shop], / , [category-path, [attribute, ID], -] ]www.sitegenesis.com/shop/mens-clothing-shorts/ 如果希望从 URL 排除某些分类或文件夹,则可以使用路径排除分类语法。
简单语法:
[ 分类路径, [属性, 显示名], /, [3,4]]将获取“品牌 > 销售 > 男士 > 鞋类 > 皮革”的分类树形结构,并显示 URL:
www.sitegenesis.com/brand/sale/leather此语法可用于配置以下 URL 规则属性:
- category-path
- category-path-with-offline
- folder-path
- folder-path-with-offline
以下配置选项适用于定义分类 URL:
“URL 规则”页面的“目录 URL”选项卡提供设置,以便有选择地将结尾斜线附加于分类 URL。
www.sitegenesis.com/mens-shorts(不使用结尾斜线)www.sitegenesis.com/mens-shorts/ (使用结尾斜线)如果站点进行了本地化,则每个站点的区域设置有单独的 URL,例如:
www.sitegenesis.com/en/mens-clothing-shortswww.sitegenesis.com/de/herren-kleidung-shorts可以通过 “URL规则”页面的“设置”选项卡来控制指定 URL 区域设置的方式。可以设置是否使用“全局首选设置”的区域设置页面来本地化您的站点。
针对使用分类路径的规则的 URL 生成行为通常会跳过离线分类,这可能导致分类标记为冲突,即使其实际没有发生冲突也是如此。这在商家需要保持分类离线时就会出现,直到发生特定事件。它们通常使用每个事件相关分类内子分类名称的标准结构,例如 MothersDay/sale、ValentinesDay/sale、Easter/Sale。
例如:
- 分类 A(离线)具有子分类
a-sale,并带有显示名SALE。A 变为在线后,a-sale 分类具有 URLb/sale。 - 分类 B(离线)有子分类
b-sale,带有显示名称SALE。B 变为在线后,b-sale 分类具有b/sale。
由于 A 和 B 离线,a-sale 和 b-sale 将有相同的 URL sale。这会使错误识别的冲突破坏 URL 冲突日志,使其难以识别真正的 URL 冲突。
可以定义包含来自离线分类/文件夹信息的规则,如这些示例所示:
[ category-path-with-offline, [ attribute, displayName ], / ]
[ category-parent-with-offline, [ attribute, displayName ], / ]
[ folder-path-with-offline, [ attribute, displayName ], / ]
[ folder-parent-with-offline, [ attribute, displayName ], / ]例如,销售分类是离线,并且这是分类的类别:
host.com/sale/mens
host.com/mens确认离线分类后,结果没有冲突:无需 URL 冲突解决。
host.com/sale/mens
host.com/mens如果没有确认离线分类,则会产生冲突,这可以通过 URL 冲突解决来处理。
host.com/mens-1
host.com/mens-2 根据分类 URL 规则,B2C Commerce 自动生成分类 URL。也可以定义任何分类的 URL 终点。
例如,以下规则:
[ attribute, displayName ]导致 以及中销售分类的冲突,URL 生成器自动为生成的 URL 附加索引编号:可以覆盖或的生成 URL。分类的 PageURL 属性作为端点使用,而不是规则生成的端点。
- 已生成的 URL:
www.sitegenesis.com/sales-1 - 已生成的 URL:
www.sitegenesis.com/sales-2
示例 1:男性促销
假定生成的 URL 是
www.sitegenesis.com/sales-1 但是,如果将分类的 PageURL 属性设置为mens-sales,的实际 URL 是:
www.sitegenesis.com/mens-sales 示例 2:女性促销
假定生成的 URL 是
www.sitegenesis.com/sales-2 但是,如果将分类的 PageURL 属性设置为womens-sales,则的实际 URL 是:
www.sitegenesis.com/womens-sales产品 URL
可以为产品页面启用 URL。根据简单的规则语法配置产品 URL 端点。
使用 Business Manager 的首选项启用产品 URL,并通过 “URL 规则”页面的“目录 URL” 选项卡配置。在以下示例中,产品 URL 包含其分类、名称,以及产品 ID。产品 ID 是强制性的,和扩展名 .html 一起附加在每个产品的 URL 尾部。
URL 规则:
[ [category], /, [ attribute, name ] ]示例 URL:
www.sitegenesis.com/mens-clothing-shorts/straight-fit-shorts/8353682.html 可以配置在产品 ID 前面的分隔符是“/”还是“-”。如果分隔符是“-”,但产品名称包含“-”,则 B2C Commerce 自动为此产品的 URL 使用“/”分隔符。www.sitegenesis.com/crowne-shorts-brown/83536828.html,而不是 www.sitegenesis.com/crowne-shorts-brown-83536828.html
要定义产品 URL 的网页内容,您可以组合多个元素,并指定元素之间的分隔符。
[ [attribute_1], del , [attribute2], del , [attribute_3] ] 该规则最多可以包含五个元素。元素有两种类型:attributes(属性)和 category(分类)。
以下配置选项适用于定义产品 URL 端点:
| 选项 | 定义 |
|---|---|
| 分类 | 示例: 对于以下规则,请勾选用“-”而非“/”作为产品 ID 的分隔符复选框。 如果未勾选复选框,您会看到以下: |
| attribute | 该元素用于包含分类信息。示例:由分类 URL 生成器生成的分类 URL(请参阅上述章节)。如果 URL 应该“在分类环境中显示产品”,则必须使用此规则。 此分类的显示名称。 分类的 URL 名称以及分类的其它自定义属性。 |
| 常量 | 该元素用于包含任意文本元素。 还可以使用带常量元素的分类。 |
B2C Commerce 使用以下逻辑确定 URL 的分类:
- 使用网店目录的产品主分类。
如果产品没有分配的主分类,或是网店目录中没有主分类,则进行下一步。
- 使用网店目录的产品类别分类。
如果产品没有分配的类别分类,或是网店目录中没有类别分类,则进行下一步。
- 使用以前分配给产品的网站目录的第一个分类。产品必须分配至网店目录的至少一个分类,以便在站点提供。
与分类 URL 类似,可以使用 PageURL 属性覆盖 URL 生成器生成的产品 URL。
产品的生成 URL:www.sitegenesis.com/sports-shoe-red/1234.html
产品的 PageURL 属性:mckenzie-sports-shoe
的实际 URL 是:www.sitegenesis.com/mckenzie-sports-shoe/1234.html
网页内容和文件夹 URL
文件夹和内容素材的 URL 定义/生成的工作方式与分类和产品相同。有关文件夹和内容 URL规则的示例,请参阅 Business Manager 的 URL 规则页面、网页内容 URL 页面。
Pipeline 别名
除了产品、分类和内容页面以外的所有页面 URL 在 URL 中显示 Pipeline 。对于 Pipeline 页面,您可以将 Pipeline 名称映射至 Business Manager 的别名,从而创建不包含 /on/demandware.store 的 URL。Pipeline 页面 URL 类似于:
www.sitegenesis.com/on/demandware.store/Sites-SiteGenesis-Site/default/Account-Showwww.sitegenesis.com/on/demandware.store/Sites-SiteGenesis-Site/default/Search-Show?q=shoes在 Business Manager 中,您可以为任意管道定义映射。
| URL | Pipeline |
|---|---|
| account | Account-Show |
| search | Search-Show |
| wishlist | Wishlist-Show |
如果开启新 URL,并且已经为 Pipeline 定义了映射,则 URL 变为以下格式:
www.sitegenesis.com/account
www.sitegenesis.com/search?q=shoes区域设置
通过选择以下区域设置选项,您可以控制是否以及如何在所有网店 URL 中表示区域设置/语言识别码:无、主机名、URL 参数或路径。
如果站点只有一种演示语言,则使用无选项。传入 URL 不会进行任何语言识别码的检查。所有页面均按站点的默认区域设置提供。B2C Commerce 假定只有一个允许的站点区域设置,但是如果有多个,则使用默认的一个。生成的 URL 不会包含任何区域设置标识码。
www.example.com/mens 对于主机名称,通过检查传入 URL 的主机名来确定演示语言。您必须配置主机名和站点区域设置之间的映射,例如 de.example.com - de_DE、www.example.com - en_US、es.example.com - es_US。多个主机名可以映射至一个区域设置。如果没有主机名的映射,则页面会按默认站点区域设置提供。
www.example.com/mensde.example.com/mens对于 URL 参数,通过检查传入 URL 的标准 URL 参数来确定演示语言。默认参数名称是“locale”,比如 ?locale=en-US,而且您可以指定另一个查询字符串参数名称,比如“lang"。可以将任何自定义字符串的语言代码映射配置到站点区域设置中,例如 default <> en_US, es <> es_US。如果没有映射,则假定已经指定区域设置 ID。如果区域设置 ID 不匹配任何允许的站点区域设置,则页面按站点区域设置的默认选项提供。如果前缀有效,或者前缀无效时,为站点的默认区域设置定义前缀,则生成的 URL 包含与传入 URL 相同的 URL 参数。可以定义 URL 参数的名称。
www.example.com/mens?locale=en-USde.example.com/mens?lang=enwww.example.com/mens?lang=spanish对于路径,通过检查 URL 路径的第一个元素来确定演示语言。可以将 URL 语言编码映射配置到站点区域设置中,例如 default-> en_US、en -> en_US。如果不存在映射,则假定在 URL 中指定区域设置 ID。如果区域设置 ID 不匹配任何允许的站点区域设置,则页面按默认的站点区域设置提供。
www.example.com/de/menswww.example.com/en/mens 通过指定第一个值、“/” 符号,然后是第二个值,就可以定义双路径区域设置。例如,en/US 或 de/DE,这将产生以下结果:
www.example.com/en/US/menswww.example.com/de/DE/mens
