【问题标题】:Sitecore - Multiple-Site Error Page HandlingSitecore - 多站点错误页面处理
【发布时间】:2010-11-08 21:21:25
【问题描述】:

我有一个多站点 Sitecore 项目。我知道如何通过 webconfig 的 ErrorPage、ItemNotFoundUrl、LayoutNotFoundUrl、LinkItemNotFoundUrl 为一个站点处理错误页面。

但是,我想为每个站点显示不同的错误页面。我怎样才能做到这一点?

【问题讨论】:

    标签: error-handling sitecore sitecore6


    【解决方案1】:

    在任何情况下,您都可以通过扩展Sitecore.Sites.SiteContext 类(see for information about extending existing classes) 将每个站点的错误页面的URL 作为/configuration/sitecore/sites/site 元素的属性存储在web.config 中。

    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 共享源项目,或者将它添加到一个现有的项目中。

    【讨论】:

      【解决方案2】:

      entry in the SDN scrapbook 介绍了如何为多站点安装执行此操作。

      【讨论】:

        【解决方案3】:

        有一个共享源项目应该满足大多数部分的要求。它被称为Sitecore Error Manager

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多