做网站最烦的就是死链,用户点进来看到一个光秃秃的英文报错页,心里直接给你判了死刑。我用的是虚拟主机,IIS7.5版本,想换个自己风格的404页面,折腾了半天发现和网上教程说的完全对不上。那些教程动不动就让你改服务器配置文件,可虚拟主机就是个租来的小隔间,服务器根权限根本没给你。
实际试下来,真正管用的就一招:用web.config文件。这个文件就在你网站的根目录里,一般虚拟主机默认就有,找不到的话自己新建一个文本文档改名就行。但是记住,别用Windows自带的记事本去改,编码格式很容易出问题,推荐用Notepad++或者Visual Studio Code这类工具,编码统一存成UTF-8。
在web.config里加上这段代码:
```xml
```
这段代码的意思就是告诉IIS,碰到404错误的时候,别自己在那瞎报错,直接把我根目录下的404.html页面吐给访客。注意path这里填的是相对路径,从根目录开始算,文件名自己起,比如error404.html都行。

讲个容易踩坑的地方,responseMode这个参数。网上很多教程写的是Redirect,我试过,地址栏确实会跳转到/404.html,但这属于二次重定向,对搜索引擎不友好,可能会被判定为软404。用ExecuteURL的话,URL地址保持原样,但页面内容显示404里的自定义内容,这种处理方式对SEO更友好。
有朋友可能遇到这种情况,代码加了,文件也传上去了,刷新一看还是原来的报错页。这多半是虚拟主机开了静态缓存,等个几分钟再试,或者清一下浏览器缓存。还不生效的话,问问你的主机商,有些老掉牙的虚拟主机系统给拦截了,需要他们后台帮你调一下。
调完状态码也要验证一下。在浏览器地址栏随便输一个不存在的路径,比如你网站的域名加个/abc123xyz,回车之后,你看页面内容变了没。再按F12打开开发者工具,看Network标签页里这个请求,名字叫404的那个文件,Status Code应该显示404,而不是200。如果显示200,说明你的404页面代码触发了IIS的某种处理逻辑,导致它误以为请求成功,这种假404比没设置还坑。
对了,页面设计也别太敷衍。有些朋友搞个404页面就一行字“页面不存在”,这跟IIS自带的那个破默认页有啥区别。好的404页面,要带一个搜索框,带一个回到首页的按钮,最好还能有个最近更新文章的列表。目的就是把差点流失的用户拉回来。
还有个小细节,404.jpg之类的图片别引外部链接。万一你引用的图挂了,那404页面就显示个裂图,比系统默认的还难看。图片直接传到网站根目录下的img文件夹里,用相对路径引用就行。
最后唠叨一句,404页面改了主要是给用户看的,服务器的错误日志该记录的还记录着,所以隔段时间去扒拉一下日志,看看那些404进来的路径,是不是网站内部有链接写错了,能修就赶紧修掉。毕竟靠404页面挽留只是补救措施,根子上的问题还要解决。