我有一个多站点 Sitecore 项目。我知道如何通过 webconfig 的 ErrorPage、ItemNotFoundUrl、LayoutNotFoundUrl、LinkItemNotFoundUrl 处理一个站点的错误页面。
但是,我想为每个站点显示不同的错误页面。我怎样才能做到这一点?
最佳答案
在任何情况下,您都可以将每个站点的错误页面的 URL 存储为 /configuration/sitecore/sites/site
的属性。 web.config 中的元素通过扩展 Sitecore.Sites.SiteContext
类( see for information about extending existing classes )。
SDN forum post提供有关 404 /ItemNotFound
的更多信息条件,包括 Sitecore.SItes.SiteContext
的扩展示例.
对于 ItemNotFoundUrl
,我认为这取决于您使用项目还是文件作为404页面。如果你处理 404 的项目,那么在项目解析器之后,添加一个处理器到 httpRequestBegin
如果上下文项为空,则将上下文项设置为该站点的 404 项的管道。如果您使用文件,那么我认为覆盖 Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleItemNotFound()
和 Sitecore.Resources.Media.MediaRequestHandler.DoProcessRequest()
并更新 web.config 文件中的相应引用。
对于 ErrorPage
, 我认为你必须覆盖 Sitecore.Pipelines.RenderLayout.SecurityCheck.Process
并更新 web.config 中的相应引用。
对于 LayoutNotFoundUrl
, 我认为你必须覆盖 Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleLayoutNotFound
, 并更新 web.config 中的相应引用。
对于 LinkItemNotFoundUrl
,我可能会向 renderField 管道添加一个处理器,以使用适用于上下文站点的值替换设置的默认值。
如果这是一个常见的需求,我们应该把它变成一个 Sitecore 共享源项目,或者将它添加到现有项目中。
关于error-handling - Sitecore - 多站点错误页面处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4128197/