gpt4 book ai didi

error-handling - Sitecore 重定向错误

转载 作者:行者123 更新时间:2023-12-03 07:39:56 28 4
gpt4 key购买 nike

我知道我可以扩展 Sitecore.Pipelines.HttpRequest.ExecuteRequest 并覆盖 RedirectOnItemNotFound 等方法以重定向到我的自定义 404 页面等。我想知道是否有为除 404 和 500 之外的所有错误重定向到自定义页面(位于 sitecore 中)的方法?

我猜 403 错误有一个 RedirectOnNoAccess 方法,但我正在寻找重定向所有错误的方法,如 400、401、403、405 等。

Sitecore v7.2

干杯

最佳答案

您不需要扩展 ExecuteRequest 处理器,配置的 Sitecore 部分中有设置来处理这些:

<!--  ITEM NOT FOUND HANDLER
Url of page handling 'Item not found' errors
-->
<setting name="ItemNotFoundUrl" value="/sitecore/service/notfound.aspx"/>

<!-- LINK ITEM NOT FOUND HANDLER
Url of page handling 'Link item not found' errors
-->
<setting name="LinkItemNotFoundUrl" value="/sitecore/service/notfound.aspx"/>

<!-- LAYOUT NOT FOUND HANDLER
Url of page handling 'Layout not found' errors
-->
<setting name="LayoutNotFoundUrl" value="/sitecore/service/nolayout.aspx"/>

<!-- ACCESS DENIED HANDLER
Url of page handling 'Acess denied' errors
-->
<setting name="NoAccessUrl" value="/sitecore/service/noaccess.aspx"/>

更新这些值以指向正确的路径。这可以是 Sitecore 项目路径,例如/errors/404,只要该项目存在于 Sitecore 中。将 url 参数添加到路径有点烦人,如果你想摆脱它,你将需要扩展处理器。如果您有一个多站点实现,那么这仍然有效,但您需要确保所有站点的结构都相同,因为您使用的是相对路径。错误管理器模块本质上是这些相同设置的包装器,但更好的是它能够处理多站点并显示错误页面,而无需先进行 302 重定向。

如果您需要处理其他错误,则回退到使用配置中的错误部分来定义这些错误。这些值也可以通过 IIS 设置(尽管它只是更新 web.config)

<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="ExecuteURL" defaultPath="/errors/404">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="405" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/errors/404" responseMode="ExecuteURL" />
<error statusCode="405" prefixLanguageFilePath="" path="/errors/405" responseMode="ExecuteURL" />
<error statusCode="500" prefixLanguageFilePath="" path="/errors/static/500.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>

这些可以通过设置项目的 URL 路径或磁盘上的静态 HTML 文件在 Sitecore 中,并且只要所有站点的结构相同,它就可以在多站点中工作,因为路径可以是相对的。一般建议500页面为静态HTML页面,否则有无限循环的可能(例如数据库宕机,显示500,从Sitecore获取内容,但数据库宕机...)。

即使您使用错误管理器模块或使用 Sitecore 设置,我也建议您在配置中定义 404 和 500 页面。默认情况下,Sitecore 将只处理动态和无扩展的 URL 请求,因此如果请求是针对 /file.txt/style.css/script.js /document.pdf 然后你会得到一个标准的 IIS 错误页面。

<preprocessRequest>
<processor type="Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions, Sitecore.Kernel">
<param desc="Allowed extensions (comma separated)">aspx, ashx, asmx</param>
<param desc="Blocked extensions (comma separated)">*</param>
<param desc="Blocked extensions that stream files (comma separated)">*</param>
<param desc="Blocked extensions that do not stream files (comma separated)"></param>
</processor>
</preprocessRequest>

你可以允许 all requests to go through Sitecore但这似乎有点笨手笨脚,你让它通过额外的管道运行。设置以上将意味着您的静态内容也得到妥善处理。

关于error-handling - Sitecore 重定向错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31445145/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com