根据用户尝试的URL使用不同的404错误页面

时间:2014-09-02 08:15:09

标签: c# asp.net redirect web-config http-status-code-404

(注意:我对asp.net/c#很新,请跟我说)

在我的网站上,我在web.config

中使用了这个自定义404错误页面
<customErrors mode="RemoteOnly" defaultRedirect="http://mywebsite.org/404">
  <error statusCode="404" redirect="http://mywebsite.org/404" />
</customErrors>

现在我想添加由包含特定字符串的URL“触发”的其他404页面。例如,如果网址包含/library/,我希望将用户重定向到http://mywebsite.org/library-404,其中包含特定于网站库部分的信息。包含/services/和其他网址的网址也是如此。

可以这样做吗?如果是这样,怎么样?谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用ASP.NET MVC。设置路由以映射URL。

答案 1 :(得分:0)

您可以在 Global.asax.cs 中定义方法Application_Error并像这样处理

void Application_Error(object sender, EventArgs e)
{
    var error = Server.GetLastError();
    var code = (error is HttpException) ? (error as HttpException).GetHttpCode() : 500;
    string path = Request.Path;

    if (code == 404)
    {
        if (new Regex(@"\/library\/", RegexOptions.IgnoreCase).IsMatch(path))
        {
            Server.ClearError();
            Response.Redirect(String.Format("~/Library/Error404"));
        }
    }
}