无法在 URL 中禁用显示名称

Can't Disable Display Name in URL

我在 URL 中禁用了显示名称:

<linkManager defaultProvider="sitecore">
  <providers>
    <clear />
    <add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="false" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="never" languageLocation="filePath" lowercaseUrls="false" shortenUrls="true" useDisplayName="false" />
  </providers>
</linkManager>

但我仍然可以浏览到显示名称。我没有自定义 ItemResolver。我不明白为什么我可以通过显示名称浏览到这些页面。

负责url生成的是LinkProvider。它与浏览到 url.

无关

要浏览 url,您需要编写自己的 ItemResolver

默认 Sitecore ItemResolver class 有一种方法会尝试根据其显示名称解析项目,并且没有允许您立即禁用它的设置。

这是因为您只是将 Link 提供程序设置为在生成链接时不使用 Display Names

Sitecores Link 提供程序和项目解析器使用不同的代码。在项目解析器中,如果项目无法通过直接路径解析,它会调用此代码:

Item obj2 = this.ResolveUsingDisplayName(args);

因此它也将通过显示名称进行解析。

要更改它,您需要覆盖 ItemResovler 并删除该行代码。