.net下返回404错误页面并跳转的解决办法
2010-12-03 17:08
435 查看
HTTP404对SEO的影响
自定义404错误页面是提供用户体验的很好的做法,但在应用过程中往往并未注意到对搜索引擎的影响,譬如:错误的服务器端配置导致返回“200”状态码或自定义404错误页面使用Meta Refresh导致返回“302”状态码。正确设置的自定义404错误页面,不仅应当能够正确地显示,同时,应该返回“404”错误代码,而不是“200”或“302”。虽然对访问的用户而言,HTTP状态码究竟是“404”还是“200”来说并没有什么区别,但对搜索引擎而言,这则是相当重要的。
使用web.config中的customErrors来做的话并不好,因为asp.net会在返回的head头上加上302状态,即使你在自定义的404页面上设置Response.StatusCode = 404也是无法消除asp.net加的302错误。因此我的办法就是在全局错误处理Application_Error中设置并返回html代码。
这是代码:
Code
/// <summary>
/// 全局错误处理,记录文件型日志
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_Error(object sender, EventArgs e)
{
Response.Clear();
Response.StatusCode = 404;
Response.Write("<html xmlns=\"http://www.w3.org/1999/xhtml/" ><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>页面没有找到</title><meta http-equiv=\"refresh\" CONTENT=\"0; url=/\"></head><body><div>" +
"<div style=\"display:none;\">页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到</div></div></body></html>");
Response.End();
}
为什么要加那么多的“页面没有找到”呢?是因为ie有个BUG:如果404页面大小不够521b的话会被ie的默认内容替换。
另个需要注意的是meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />这个必须在title标签前,否则ie6下不能跳转。
自定义404错误页面是提供用户体验的很好的做法,但在应用过程中往往并未注意到对搜索引擎的影响,譬如:错误的服务器端配置导致返回“200”状态码或自定义404错误页面使用Meta Refresh导致返回“302”状态码。正确设置的自定义404错误页面,不仅应当能够正确地显示,同时,应该返回“404”错误代码,而不是“200”或“302”。虽然对访问的用户而言,HTTP状态码究竟是“404”还是“200”来说并没有什么区别,但对搜索引擎而言,这则是相当重要的。
使用web.config中的customErrors来做的话并不好,因为asp.net会在返回的head头上加上302状态,即使你在自定义的404页面上设置Response.StatusCode = 404也是无法消除asp.net加的302错误。因此我的办法就是在全局错误处理Application_Error中设置并返回html代码。
这是代码:
Code
/// <summary>
/// 全局错误处理,记录文件型日志
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_Error(object sender, EventArgs e)
{
Response.Clear();
Response.StatusCode = 404;
Response.Write("<html xmlns=\"http://www.w3.org/1999/xhtml/" ><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>页面没有找到</title><meta http-equiv=\"refresh\" CONTENT=\"0; url=/\"></head><body><div>" +
"<div style=\"display:none;\">页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到页面没有找到</div></div></body></html>");
Response.End();
}
为什么要加那么多的“页面没有找到”呢?是因为ie有个BUG:如果404页面大小不够521b的话会被ie的默认内容替换。
另个需要注意的是meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />这个必须在title标签前,否则ie6下不能跳转。
相关文章推荐
- .net下返回404错误页面并跳转的解决办法
- .net返回404错误页面并跳转的解决办法
- 【ASP.NET 问题】ASP.NET 网站404页面返回200,或者302的解决办法
- asp.net 错误 404找不到页面的解决办法
- ASP.NET设置404页面返回302状态码的解决办法
- asp.net web api http put delete , iis 返回400.0 找不到错误的解决办法.
- ASP.NET设置404页面返回302HTTP状态码的解决方法
- 在使用ASP.NET网站管理工具出现“遇到错误。请返回上一页并重试。”的解决办法!
- iis6.0添加asp.net 3.5网站 出现“HTTP 错误 404 - 文件或目录未找到”的解决办法
- C# post数据时 出现如下错误: System.Net.WebException: 远程服务器返回错误: (417) Expectation Failed 的解决办法
- jsp跳转到servlet 出现 404 路径错误的问题解决办法
- iOS模态跳转的页面WebView中加载html调用本机相册会dismiss返回上一个页面解决办法
- .NET浏览ASP.NET页面时出现This application is currently offline. To enable the application, remove...错误的解决办法
- asp.net mvc输出自定义404等错误页面,非302跳转。
- C# post数据时 出现如下错误: System.Net.WebException: 远程服务器返回错误: (417) Expectation Failed 的解决办法
- ASP.NET中Button按钮,需点击两次,才能够页面跳转。原因与解决办法。
- C# 模拟post数据提交时 出现如下错误: System.Net.WebException: 远程服务器返回错误: (417) Expectation Failed 的解决办法
- .NET浏览ASP.NET页面时出现This application is currently offline. To enable the application, remove...错误的解决办法
- asp.net关于控件运行返回错误:必须放在具有 runat=server 的窗体标记内,解决办法。
- asp.net fileupload 上传文件错误页面404 解决方法