重定向到特定资源的404页面

时间:2013-10-15 15:22:52

标签: c# asp.net url-rewriting

我如何对特定请求强制执行404错误?

我不希望从网站中排除该页面。

但是,如果用户请求以下两个文件,我将始终返回404错误页面NotFound.aspx

/site/employee/pensionplan.aspx

/site/employee/pensiondoc.pdf

我被告知not to use the web.config for 404 error configuration, due to some security issues。我不确定究竟是什么问题

<!-- Turn on Custom Errors -->
<customErrors mode="On" 
  defaultRedirect="DefaultRedirectErrorPage.aspx">
  <error statusCode="404" redirect="Http404ErrorPage.aspx"/>
</customErrors>

在尝试访问特定资源时,将用户重定向到Not Found页面的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

为了方便起见,请将其放入Http404ErrorPage.aspx代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
    Response.StatusCode = 404;
}

在你的web.config中有这个:

<location path="site/employee/pensionplan.aspx">
<system.webServer>
  <httpRedirect enabled="true" destination="http://www.website.com/Http404ErrorPage.aspx" httpResponseStatus="Permanent" />
</system.webServer>
</location>
<location path="site/employee/pensiondoc.pdf">
<system.webServer>
  <httpRedirect enabled="true" destination="http://www.website.com/Http404ErrorPage.aspx" httpResponseStatus="Permanent" />
</system.webServer>
</location>

更强大的解决方案是使用HttpHandler作为MikeSmithDev推荐的方式,这样就可以控制用户是否为404。