我们已正常安装DNN(v09.00.02 366),并使用站点设置下的“默认页面”设置了404页面。
这种奇怪的行为是,当您浏览到不存在的页面时,DNN返回父页面的内容而不是返回404页面。
/ parent / child =>返回/ parent
的内容该子页面不存在,因此应返回HTTP状态代码为404的404页面。
我们如何改变行为以遵循期望的行为?
答案 0 :(得分:1)
以下列出了找不到页面会在DNN中正确返回404错误的最常见实例:
还有其他选择实例,但这是要点。这是由于DNN的动态特性。将模块添加到页面时,DNN不知道该模块是否动态创建其自己的URL。
示例包括博客和新闻模块。非技术内容编辑者需要能够创建新的博客文章或新闻项目,并且应具有自己的唯一URL。
示例:
查看上面的示例,由于页面实际上确实存在,因此DNN无法安全地重定向为HTTP 404错误,而只能作为URL,然后将其动态用于从页面上的模块加载自定义数据。
一种解决方案是创建自己的URL提供程序,您可以基于DNN核心中的URL提供程序。
另一种解决方案是确保您设置独立页面(没有动态模块的页面)以指定规范的URL。您可以在页面的相应设置中执行此操作。
有关URL提供程序发布时的更多信息,请参见下面的博客文章。
https://www.dnnsoftware.com/community-blog/cid/154518/page-not-found-404-error-handling-in-dnn
另一方面,许多URL提供程序功能没有UI来控制它们。您可以通过运行以下查询来查看URL提供程序设置,以了解设置是什么。
-- the highest-level settings
SELECT * FROM [dbo].[HostSettings] WHERE [SettingName] LIKE '%aum_%' ORDER BY [SettingName];
-- setttings for each website, overriding the host-level settings
SELECT * FROM [dbo].[PortalSettings] WHERE [SettingName] LIKE '%aum_%' ORDER BY [PortalId], [SettingName];