在内容树中托管多个404页面的最佳Kentico方式

时间:2017-11-16 19:53:38

标签: http-status-code-404 kentico

我正在寻找最好的(或非常好的)" Kentico方式"在内容树中实现多个404 Not Found页面,每个页面用于内容树的不同区域。

例如,给定以下具有博客项目和合作伙伴资料的假设内容树结构,

% Root Master
|__ Home
|__ Blog ._ Blog Item A 
         |_ Blog Item B
         |_ Blog Item C
         |_ 404 Page for Blogs
|__ Policy
|__ Partners ._ Partner Profile A
             |_ Partner Profile B
             |_ Partner Profile C
             |_ 404 Page for Partners
|_ Site 404 Page 

我正在寻找以下行为:

  • 如果用户访问不存在的博客项目D,我希望显示404 Page for Blogs。
  • 同样,如果用户访问不存在的合作伙伴资料D,我希望合作伙伴的404页面显示。
  • 如果在网站中找不到任何其他网页,则应按照正常情况通过Kentico设置显示网站404页面。

我对于仅使用ASP.NET配置犹豫不决,因为我想在Kentico中维护解决方案,并且在添加新的404页面时不回收网站的应用程序池。

我的想法是创建一个自定义Web部件,我可以将其放到网站的全局404页面模板(每404的默认位置)。此Web部件将使用错误路径(ala querystring value aspxerrorpath =)来查看未找到的路径,然后检查它是否包含单词" blogs"或"合作伙伴"并将浏览器重定向到相应的子404页面。或者,是否有更简单的方法 - 可能使用页面别名和/或宏 - 同时保持Kentico内的解决方案?

我正在使用Kentico 9& 10.

2 个答案:

答案 0 :(得分:1)

我不相信在Kentico中有一个很好的方法可以解决这个问题。最好的方法是在主web.config中添加<location>元素,并在那里设置这些路径和404页面。

另一种可能是你提到的通过webpart管理它。但我可能会更进一步,并从中创建一个模块,以便您的webpart可以根据引用的URL或错误页面执行查找,并根据匹配的查找值执行任何自定义显示或重定向。

答案 1 :(得分:1)

我认为网站有多个404有点不自然。我认为你所描述的是Kentico方式。在这个常见的404页面上,您可以删除多个静态HTML Web部件并根据ErrorPath启用它们,如果没有匹配的ErrorPath,则您有一个通用的静态HTML Web部件来处理常见情况。 附:从技术上讲,你可以在IIS中为每个文件夹设置特定的web.config,并尝试使用它,但Kentico Tree纯粹是虚拟的,所以你所描述的几乎是Kentico方式。