Sitecore - 多站点错误页面处理

时间:2010-11-08 21:21:25

标签: error-handling sitecore sitecore6

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

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

3 个答案:

答案 0 :(得分:5)

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

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共享源项目,或将其添加到现有项目中。

答案 1 :(得分:4)

关于如何为多站点安装执行此操作,有一个entry in the SDN scrapbook

答案 2 :(得分:4)

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

希望有所帮助。