【问题标题】:set up httpmodule to prevent 404's for certain pages设置 httpmodule 以防止某些页面出现 404
【发布时间】:2012-01-19 19:01:09
【问题描述】:
我目前正在开发一个 .net c# web 应用程序。我已经从网站上删除了几个 .aspx(删除它们),例如 page1.aspx、page2.aspx 等。
我现在要做的是创建一个 http 模块,当用户浏览器调用 page1.aspx 或 page2.aspx 时,不是返回 404 状态代码,而是为已删除页面返回适当的状态代码并重定向用户转到主页,而不是错误页面。
实现这一点的最佳方法是什么,是通过 http 模块吗?如果是,我会设置这样的吗?
【问题讨论】:
标签:
c#
asp.net
http-status-code-404
httpmodule
【解决方案1】:
如果只有几页,您可以用Response.StatusCode = 410 和一个简单的window.location = basepage 将它们留在那里。
如果它是一个可以变大的动态列表,我会将其放入您的应用程序错误处理程序中:
protected void Application_Error(Object sender, EventArgs e)
{
if (/*requesting a deleted resource*/)
{
//return status 410 and a javascript redirect
}
}
【解决方案2】:
我认为这是最好的方法。
它实际上非常简单。只需将其放入您的 webconfig 中即可。
<customErrors mode="On" defaultRedirect="~/TheDefaultErrorPage.aspx">
<error statusCode="404" redirect="The404ErrorPage.aspx"/>
</customErrors>
如果你愿意,添加更多错误也很容易。