DNNreturn父页面不是404页面,如何return404?
DNN return parent page instead of 404 page, how to return 404?
我们有一个正常的 DNN 安装 (v09.00.02 366),我们使用站点设置下的 "Default Pages" 设置了一个 404 页面。
当您浏览到一个不存在的页面时,DNN return 访问父页面的内容而不是 return 访问 404 页面,这是一种奇怪的行为。
/parent/child => returns /parent
的内容
子页面不存在,因此它应该return HTTP 状态代码为 404 的 404 页面。
我们如何更改行为以遵循所需的行为?
在 DNN 中,未找到页面将正确 return 404 错误的最常见实例如下:
- 这是一个根级页面,不存在 https://example.com/not-found
- 该页面存在,但当前已被删除、禁用或受权限保护(and/or您没有适当的权限)
还有其他 select 个实例,但这就是它的要点。这是因为 DNN 的动态特性。当一个模块被添加到一个页面时,DNN 不知道这个模块是否正在动态创建它自己的 URL。
这方面的例子包括博客和新闻模块。非技术内容编辑需要能够创建新博客 post 或新闻条目,并且它应该有自己独特的 URL.
示例:
- 博客根页面:https://example.com/blog
- 动态博客Post页面:https://example.com/blog/this-is-a-new-article
- 动态博客Post页面:https://example.com/blog/post/123/this-is-a-new-article
查看上面的示例,DNN 无法安全地重定向为 HTTP 404 错误,因为页面确实存在,但仅作为 URL,然后动态用于从页面上的模块。
一个解决方案是创建您自己的 URL 提供程序,您可以基于 DNN 核心中的提供程序。
另一个解决方案是确保您将独立页面(没有动态模块的页面)设置为指定规范 URL。您可以在页面的相应设置中执行此操作。
发布时有关 URL 提供程序的更多信息在下面的博客 post 中。
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];
我们有一个正常的 DNN 安装 (v09.00.02 366),我们使用站点设置下的 "Default Pages" 设置了一个 404 页面。
当您浏览到一个不存在的页面时,DNN return 访问父页面的内容而不是 return 访问 404 页面,这是一种奇怪的行为。
/parent/child => returns /parent
的内容子页面不存在,因此它应该return HTTP 状态代码为 404 的 404 页面。
我们如何更改行为以遵循所需的行为?
在 DNN 中,未找到页面将正确 return 404 错误的最常见实例如下:
- 这是一个根级页面,不存在 https://example.com/not-found
- 该页面存在,但当前已被删除、禁用或受权限保护(and/or您没有适当的权限)
还有其他 select 个实例,但这就是它的要点。这是因为 DNN 的动态特性。当一个模块被添加到一个页面时,DNN 不知道这个模块是否正在动态创建它自己的 URL。
这方面的例子包括博客和新闻模块。非技术内容编辑需要能够创建新博客 post 或新闻条目,并且它应该有自己独特的 URL.
示例:
- 博客根页面:https://example.com/blog
- 动态博客Post页面:https://example.com/blog/this-is-a-new-article
- 动态博客Post页面:https://example.com/blog/post/123/this-is-a-new-article
查看上面的示例,DNN 无法安全地重定向为 HTTP 404 错误,因为页面确实存在,但仅作为 URL,然后动态用于从页面上的模块。
一个解决方案是创建您自己的 URL 提供程序,您可以基于 DNN 核心中的提供程序。
另一个解决方案是确保您将独立页面(没有动态模块的页面)设置为指定规范 URL。您可以在页面的相应设置中执行此操作。
发布时有关 URL 提供程序的更多信息在下面的博客 post 中。
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];