404页面需从用户与搜索引擎两方面进行友好处理:
1.当用户进入一个已不存在的页面时很可能就马上离开,使用一个404页面既能友好地提示用户不能访问的原因还可以挽留住访客;
2.当搜索引擎来抓取页面时你必须要返回一个404页面不存在的状态码告诉搜索机器该页面不存在,否则对SEO有些影响。推荐阅读《404错误的处理方式及其对SEO的影响》
所以,最重要的是先要页面返回状态码为404,然后再跳转到一个提前设计好的404页面。
ASP里设置返回404状态码方法:
1.首先IIS设置的方法一般没有权限,而在服务商的虚拟主机管理中可以自定义设置404页面。看我的虚拟主机管理面板:

[图:虚拟主机中404错误页面设置]
需要注意的是,404错误页设置一般都在虚拟主机管理中的“高级选项”中。然后设置一个404错误页的文件名,后缀为.asp,而前面的文件名则可以自定义了。而后缀为的.html是返回不了404状态码的,故在不能设置IIS的情况下,页面返回404必须是.asp为后缀的文件。
2.假设我们在虚拟主机里定义404错误页为err404.asp文件,那么下面则需要在err404.asp文件设置如下必须的代码:
<%
Response.Status = "404 Not Found"
%>
代码放置在页面顶部,这样就可以让不存在页面返回404状态码了。我们可以使用FF的Firebug(常用的Js调试工具)工具进行查看页面是否真的返回了404,当然还有诸如httpwatch等工具。

[图:firebug下查看页面返回状态]
Firebug使用时需要将网络中起用调试该站点的调试。
另外,网上有些介绍在代码里加了response.end 如下:
<%
Response.Status = "404 Not Found"
Response.end
%>
如果加了Response.end则后面的内容全都不加载,也就看不到我们定义好的404页的外观跟其他内容了。
3. 状态码已经正确地返回404了,接下来需要做一个对用户体验良好的404页面的外观。网上有很多参考,可以Google一下“404 创意”http://www.google.cn/search?hl=zh-CN&q=404+%E5%88%9B%E6%84%8F&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=7&oq=404+
4. 你可能还想在用户看到404页面后,再让页面自动跳转到首页或是其他特定页。分享两种经过测试的方法。
4.1 利用meta标签的refresh进行跳转
<meta http-equiv="refresh" content="3;url=http://www.yahoo.com/?xxx">
说明:content属性里第一个分号(;)前的数值3为跳转等待的时间3秒,数值越大等待越久。分号后为你需要跳转的url地址。据Google中文博客管理员介绍,Yahoo就使用的此方法进行跳转。
4.2 使用js进行跳转
<script style="text/javascript">
setTimeout("testTime()",2500);
function testTime() {
location = "http://www.sem80.com/";
}
</script>
说明:跳转等待时间修改数值2500,数值越大等待时间越长。
5.其他环境下返回404状态码的方法:
5.1 IIS/ASP.net下设置404错误页面
首先,修改应用程序根目录的设置,打开 “web.config” 文件编辑,在其中加入如下内容:
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="error.asp">
<error statusCode="404" redirect="notfound.asp" />
</customErrors>
</system.web>
</configuration>
说明:未亲测,推荐阅读 《.net下返回404错误页面并跳转的解决办法》
5.2PHP时在Apache里设置404错误页面
为Apache Server设置 404错误页面的方法很简单,只需在.htaccess 文件中加入如下内容即可:
ErrorDocument 404 /notfound.php
说明: 未亲测。
本文结束。如在ASP环境下设置有问题请留言交流。