В любом случае вы, вероятно, можете сохранить URL-адреса страниц ошибок для каждого сайта в качестве атрибутов элементов /configuration/sitecore/sites/site
в web.config, расширив класс Sitecore.Sites.SiteContext
( см. Для получения информации о расширении существующих классов.).
В форуме SDN содержится более подробная информация о состоянии 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 Shared Source или добавить его в существующий проект.