“404 Not Found”表示IIS服务器已接收请求但无法定位目标文件,需同步排查文件真实存在性、IIS虚拟目录映射、Web服务扩展启用、MIME类型配置、请求筛选规则及URL重写冲突,并确保自定义404页返回正确HTTP状态码。

当你在IIS服务器上访问网页时突然看到“404 Not Found”,说明浏览器已成功连接到服务器,但服务器找不到你请求的具体文件或路径——这不是网络断开,而是资源定位失败。修复必须从服务器配置、文件位置和URL结构三方面同步排查,不能只刷新页面或清缓存。
确认文件真实存在且路径正确
打开IIS服务器的网站物理路径(如C:\inetpub\wwwroot),逐级进入URL中声明的目录层级,手动检查目标文件是否真的存在。例如请求的是https://example.com/images/logo.png,就要确认C:\inetpub\wwwroot\images\logo.png这个文件名拼写完全一致(包括大小写)、扩展名无隐藏字符(如logo.png.txt误存为logo.png)。
若文件被移动或重命名,直接还原原始路径;若文件确实已被删除,需从备份恢复或重新部署。注意:Windows文件系统默认不区分大小写,但若网站托管在Linux子系统(WSL)或启用了IIS的“区分大小写URL匹配”策略,logo.PNG和logo.png会被视为两个不同资源。
检查IIS站点绑定与虚拟目录映射
在IIS管理器中右键目标网站→选择“编辑绑定”→确认HTTPS绑定的IP地址、端口(通常是443)、主机名(如www.example.com)与用户实际访问的URL完全匹配。若用户用https://example.com访问,而绑定中只配置了www.example.com,则会触发404。
如果URL中包含虚拟目录(如https://example.com/app/v1/index.html),进入该网站→双击“虚拟目录”→找到app节点→检查其“物理路径”是否指向正确的本地文件夹(如D:\apps\v1)。【关键陷阱】虚拟目录路径若指向一个不存在的驱动器盘符(如Z:\missing\folder),IIS不会报错,但所有请求均返回404.19子状态码。
启用缺失的Web服务扩展与MIME类型
方法一:启用Web服务扩展
在IIS管理器左侧树形菜单展开“Web服务扩展”,检查列表中“ASP.NET v4.0”“静态内容”“HTTP错误”等是否全部设为“允许”。若某项显示“禁止”,右键→“允许”即可。常见问题:新部署的.NET Core站点未启用“HTTP激活”扩展,导致.asmx或.ashx文件全部404。
方法二:添加MIME类型
选中网站→双击“MIME类型”→右上角“添加”→扩展名填.js,MIME类型填application/javascript;扩展名填.webp,类型填image/webp。若请求的资源扩展名(如.json、.woff2)未在此列表中,IIS会直接拒绝响应并记录404.3日志。
验证请求筛选与URL重写规则
第一步:检查请求筛选
选中网站→双击“请求筛选”→切换到“HTTP谓词”选项卡,确认GET、HEAD等常用方法未被勾选“拒绝”。再切换到“文件扩展名”选项卡,查看是否有误将.css、.png等常用扩展名加入拒绝列表——这是人为配置失误的高发区。
第二步:审查URL重写规则
打开网站根目录下的web.config文件,查找
强制返回正确404状态码(自定义页面必做)
1. 准备一个纯HTML文件err404.html,放入网站根目录。
2. 在IIS管理器中右键网站→“属性”→“自定义错误”→双击“404”项→在“消息类型”中【必须选择“文件”而非“URL”】→“文件名”栏输入./err404.html(注意开头的./,表示相对根目录)→确定。
3. 关键验证:用curl -I https://yoursite.com/missing-page.html命令检查响应头,确认返回HTTP/1.1 404 Not Found,而非200 OK。若返回200,说明IIS把自定义页当普通页面处理,搜索引擎会把它当作有效内容索引,造成SEO灾难。

















