0

我有一个使用 umbraco 的 web 应用程序,它有一个自定义类型 SinglePageApplication 的页面。此内容页面位于根目录:

Content
  |
  |-Portal (of Type SinglePageApplication)

此页面有一个 Id(例如:1050)并且此页面包含一个 Angular 应用程序。我想要的是当一个 url 不存在并且 umbraco 应该抛出 404 时,它会转到这个页面并让 Angular 处理页面未找到的情况。

为此,我已将 umbracoSettings.config 中的 error404 配置更改为此

<error404>1050</error404>

这有效。但很快这个 Web 应用程序将发布,它具有不同的数据库,并且门户页面可能会有不同的 Id(和 Guid)。显然,umbraco 收到的 404 将不再转发到正确的页面,我必须在实时服务器上手动更改 id。我想防止这种情况发生。

umbracosettings.config 中的示例表明我可以使用 xpaths,当我在谷歌上搜索这个问题时发现了很多示例,但所有示例都适用于 umbraco 7,而且它们似乎都不适用于 umbraco 8,我觉得可能会为此有所改变环境。不幸的是,umbraco 8 的文档目前很差。

到目前为止,我尝试过的是:

    <error404>//Page[nodeName='Portal']</error404>
    <error404>//SinglePageApplication[node='Portal']</error404>
    <error404>$site//SinglePageApplication[node='Portal']</error404>
    <error404>$root//SinglePageApplication[node='Portal']</error404>

也许我错过了一个,但他们也没有工作,所有这些都导致了丑陋的 404 页面。

当发生 404 时,将 umbraco 转发到内容页面的方法是什么,就像它使用 NodeId 但没有绑定到页面的 nodeId 或 Guid 一样?

4

1 回答 1

0

您可以在 web.config 中设置以下内容,然后将路径变量设置为您喜欢的任何内容。

 <httpErrors>
    <error statusCode="404" path="/errors/404/" responseMode="ExecuteURL" />  
</httpErrors>
于 2020-07-17T15:42:25.797 回答