Sitecore MVC 不会为 .aspx 页面给出错误

Sitecore MVC does not give error for .aspx pages

我们正在使用 MVC 格式的 Sitecore 8.1。 我们刚刚发现如果我们有一个 link 像: 我的网站.com/about 或我的网站.com/contact

如果您编写 mywebsite.com/about.aspx,它会像页面一样工作。这是所需的功能吗? 如果我们不想只有没有 .aspx 的版本,我们该怎么做?这可能吗?

编辑: 这是 url 的生成方式:

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

这是默认的 Sitecore 行为。

即使您添加 .aspx.ashx 扩展名,它也是 returns 页面。

您不能在没有自定义编码的情况下禁用此功能。

这是 sitecore 的默认行为。

您可以在生成 url 时删除扩展名,方法是传递 urlOptions.AddAspxExtension 为假。

如果我们希望在 sitecore.config 文件

中更改整个网站
<linkManager defaultProvider="sitecore">
  <providers>
    <clear />
    <add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="false" />
  </providers>
</linkManager>

如果您不希望 .aspx 或 .ashx url 存在。您可以覆盖 HttpRequestProcessor 管道并对那些 url 具有这些扩展的管道进行永久重定向。

这是 Sitecore 默认行为,但您可以做的是将任何 .aspx 页面重定向到正确的 URL,在 sitecore Link 管理器配置中保留 addAspxExtension="false" ,并将以下代码添加到您的主布局中:

 string itemUrl = Sitecore.Links.LinkManager.GetItemUrl(Sitecore.Context.Item);
 if (itemUrl != Request.Path)
    {
        Response.Redirect(itemUrl);
    }