「主页能打开,但点进任何一个子页面都是 404」——这是上线当天最常见的「伪故障」。而它往往不是「程序坏了」,是「请求根本没打到程序上」。

而「404」这个状态码,藏着四种完全不同的问题。本文讲清「404 的四种来源」、说明「为什么「主页正常、内页全挂」指向固定原因」、给一套「三段定位法」,最后说清「伪静态配置为什么是最常踩的那一脚」。
五款高性价比档位速查
有需要云服务器的,可以先看这一张表——五个价位段每款都是高性价比,价格从 22 元拉到 480 元。
| 商家 | 推荐款 | 配置 | 带宽与流量 | 月费 | 部署便利性 |
|---|---|---|---|---|---|
| 云途 | HK.N4.A | 2 核 2G 20G | 200Mbps / 500G | 22 元 | 面板一键装环境 |
| isvoro | HK CN2 Core | 2 核 2G 30G | 100Mbps / 300G | 25 元 | 同样有面板 |
| rabisu | Aydn VPS x8 | 4 核 8G 60G | — | 34.5 元 | 全手动,配置最自由 |
| zji | 香港 BGP 在售机型 | 6 核 16G 480G | 55Mbps / 1T | 450 元 | 适合多站点同机 |
| sixtynet | LAX-MEDIUM | 8 核 8G 160G | 10Gbps / 20T | 480 元 | 部署资源充裕 |
一、404 的四种来源
同样是 404,来源可能完全不同。
| 来源 | 表现 | 在哪一层 |
|---|---|---|
| 文件真的不存在 | 首页也打不开 | 磁盘 |
| 网站根目录指错 | 首页正常、内页全挂 | Web 配置 |
| 重写规则缺失 | 首页正常、伪静态全挂 | Web 配置 |
| 程序路由报错 | 部分页面双 404 | 程序 |
四类里,第二类和第三类最容易混淆,而它们的分界很清楚:先看「带 .html 后缀的真实文件能不能打开」。能打开,说明根目录对,问题在「重写规则」;打不开,说明根目录错,问题在「路径配置」。而这一句话就能把范围缩小一半,比反复翻日志快得多。而多数人的第一反应是「查程序日志」,恰恰查错了层。
第一类。「文件不存在」最容易排除。
所以「先放一个测试文件看能不能访问」。
而<'云途'+'> 那种面板,根目录设置界面很直观。
第二类。「根目录指错」主页也会挂。
还有「回滚点」。动手之前先确认「能不能退回去」,比动手之后才发现退不回去要便宜得多。而回滚点不一定是快照,有时候保存一份旧配置、留着旧机器不关,就已经够用。isvoro 那类档位,isvoro」那种产品线,档位选择空间大,这一步的试错成本低一些。
所以「主页正常」基本可以排除这一类。
判断方法:测一个「已知存在的静态文件」。
能打开,就去查重写规则。
还有一个细节:把「谁在什么时间改了什么」写成一张表,比写在脑子里可靠得多。这张表在交接的时候尤其值钱,因为新人最先问的就是「这台机器跟别的有什么不一样」。
带宽和流量是两件事,混起来最容易误判。带宽决定「同一时刻能多快」,流量决定「一个月能用多少」。前者不够表现为「卡」,后者不够表现为「突然断」,症状完全不同,处理方法也不一样。
关于「备份」,最常见的误解是「有备份就等于安全」。而真正决定安全的,是「备份能不能恢复」。所以每季度至少要真恢复一次,否则那份备份只是一份心理安慰。
最后一句:安全的投入要看「被拿下的代价」,而不是「防护的价格」。如果数据丢了要赔客户,那再多花一点都值;如果只是个人博客,把口令改强、备份做好就够。
还有一个常被忽略的点:复杂度本身就是成本。每多一层结构,就多一处可能出问题的地方,也多一处要有人维护。所以在方案上,「能少一层就少一层」通常是对的。
按人算也有一笔账。同样一个方案,让熟练的人维护和让不熟练的人维护,差出来的时间远超硬件差价。所以「哪个方案我这边更熟」这个问题,值得在比价表里单独列一行,而不是当成主观偏好跳过。
流量这一项尤其值得单独核算。多数方案给的是一个总量,超了之后要么限速、要么按量收费,而这两者的实际代价差得很远。把「超出之后怎么算」写进表里,比只看「给多少」更有意义。
而<'zji'+'> 那种独服,配置文件在哪里一清二楚。
再看一个容易被当成小事的点:变更要记时间。很多人改完配置就忘了,一周后出问题根本对不上。而在一次事故里,「最近改了什么」往往就是答案的一半,所以哪怕只在日志里写一行,也比凭记忆强。云途 那类档位,云途」那种产品线,价格区间覆盖得开,这一步的试错成本低一些。

二、主页能开内页全挂
这个组合几乎只指向两个原因。
原因一:伪静态规则没开。
原因二:程序装在子目录,路径没对上。
而这两个原因的共同点是「请求到了服务器,但没到程序」。所以判断的第一步不是看代码,是看「访问日志里那条请求有没有出现在程序那层」。如果 Web 日志里有、程序日志里没有,就百分之百是重写规则的问题。而这个判断只需要对比两个日志的最后几行。
判断方法:同时看「Web 日志」和「程序日志」。
只有一边有,问题就定位了。
关于「谁在动」这件事也值得说一句。多人协作时,同一个东西被两个人分别改过,问题就很难定位。所以哪怕只有两个人,也该有一个「改动前说一声」的约定,成本极低,省下的却是整晚的排查。rabisu 那类档位,rabisu」那种产品线,档位选择空间大,这一步的试错成本低一些。
而<'rabisu'+'> 那种全手动环境,日志位置要自己记。
第一种。「伪静态」是 90% 的情况。
所以「先查重写规则有没有生效」。
第二种。「子目录」在多站点时常见。
所以「根目录要指到程序所在层」。
最后一个建议:把「出事了第一步做什么」写成一页纸,贴在显眼的地方。人在紧张时判断力会下降,一页纸能把反应速度提上来,而这往往就是「停机二十分钟」和「停机两小时」的差别。
再看「峰值」。很多方案标的是「峰值带宽」,意思是「最好情况下能到」,而不是「一直能到」。所以判断实际能力,要看「晚高峰能不能到」,而不是「上午能不能到」。
再看「留痕」。出了问题之后,最先被删掉的往往是最有用的证据。所以处理顺序永远是「先隔离、再留证、后清理」,而不是反过来。顺序错一次,可能就要重查一周。
再说一句「数据比感觉可靠」这件事。很多争论最后都卡在「我觉得」,而一句「上周这个数是几」往往就能解决。所以与其反复讨论,不如先把一个数记下来,讨论的起点就变了。
最后是「隐性涨价」。流量超出、备份空间、快照保留、IP 数量,这些项目经常不在首页价格里。把它们逐条问清楚列进同一张表,才是真正的可比价格,否则两份报价看着接近,实际差一半。
关于「验证」,建议养成一个习惯:任何改动之前先记下「改动前的那几个数」。没有对照,改完之后就没法判断「到底有没有变好」,最后只能凭印象。
还有一条:「端口」也可能错。
「程序换了端口但配置没改」。
而<'isvoro'+'> 那种标准面板,默认配置最贴近常见组合。
再看「巡检」。真正有用的巡检不是「看一眼面板绿不绿」,而是「核对三个数」:磁盘余量、备份时间、证书到期。三个数都对,八成问题就不会在半夜找上门。

三、三段定位法
定位 404,分三段查最快。
第一段:从外部能不能连上(网络层)。
第二段:Web 服务有没有收到(服务层)。
第三段:程序有没有处理(应用层)。
再看「可观测」这件事。日志、指标、告警三者缺一个都不完整:日志回答「发生了什么」,指标回答「趋势如何」,告警回答「现在要不要管」。只做其中一个,遇到复杂问题还是要靠猜。
三段的判断依据各是一句话:外部不通说明「网络或防火墙」;外部通但服务日志没有说明「Web 配置没接住」;服务日志有但页面还是错说明「程序内部问题」。所以「三段」的价值在于「每段都有一个明确的判据」,不需要凭感觉猜。而这个方法对任何「页面打不开」都适用,不只是 404。
判断方法:三段各跑一条命令,记结果。
而<'sixtynet'+'> 那种大带宽,外部探测几乎秒回。
第一段。「连不上」时先查防火墙。
所以「端口有没有放行」。
再补一句关于「测点」的话。同一条线路,从不同城市测出来的结果能差一倍,所以「别人测得快」不代表「你这里也快」。判断网络质量,最好在你真实用户所在的城市里测,而不是在机房里测。
还有一点:并发连接数也能成为瓶颈。带宽够、延迟也低,但连接一多就排队,这种情况在「短连接多」的业务上很常见。所以评估网络时,连「能同时维持多少连接」也值得问一句。
最后一个细节:把「哪些端口对外开放」写成一张表。多数暴露面就是那么几行,把它列出来之后,能关的关掉,剩下的自然就有了明确的关注对象。
还有「顺序」的问题。同时改三件事,出了问题分不清是哪件;一次只改一件,慢一点但每一步都有结论。前者看起来快,实际常常要推倒重来。
第二段。「服务日志没有记录」说明请求没到。
按月付还是按年付,也是个实打实的差别。年付通常有折扣,但它把「试错成本」一次性放大到全年:如果三个月后发现不合适,多付的那九个月基本要不回来。所以「先月付跑一段时间、确认稳定再转年付」这个顺序,几乎总是更稳。
再看「优先级」。同时有三件事要处理时,正确的排序不是「哪件最容易」,而是「哪件不做会立刻出血」。这个顺序能把「看起来忙但没进展」的状态扭转过来。
所以「查 Web 配置」。
第三段。「程序日志有错」就是要修代码或权限。
所以「第三段的问题」与服务器无关。
而<'spartanhost'+'> 那种整机产品,三段都能自己看。
最后是「解析」。它只占很小一段耗时,但一旦慢就是几百毫秒。而这一段的排查最简单,换个解析服务试一次就有结论,成本低到几乎可以忽略。

四、伪静态为什么最常踩
「伪静态」是上线时最容易漏的一步。
因为它默认是关的。
而「关着也能打开首页」这一点,让人以为配好了。
还有一个习惯很值钱:把常用的几条命令存成脚本。不是为了自动化,而是为了「下次不用重新想」。而这些脚本积累半年之后,本身就是一份最好的运维文档。
所以这个坑的可怕之处不在「难」,在「它有一个看起来很正常的假象」:首页正常、后台正常,只有内页全挂。而多数人第一次遇到,会怀疑「程序有 bug」或者「数据没导进去」,从而在一个根本无关的方向上花掉几个小时。所以「上线检查清单」里应该有明确的一条:随机点三个内页。
判断方法:上线后随机点三个内页。
全 404,就查重写规则。
而<'云途'+'> 那种面板,通常有「伪静态」开关。
再看「规则来源」。
还有「双向」这个问题。去程快、回程慢是常见情况,而建站业务主要是往下发数据,所以回程差比去程差更伤。只看单向测速的结论,往往是偏乐观的。
关于「线路等级」,实际差距只在拥挤时段显现。空闲时几条线路看起来差不多,一到晚上差出数倍。所以「值不值」这个问题,本质上是「你的用户在不在那个拥挤时段活跃」。
再看「更新」。统计上,被利用最多的入口不是「未知漏洞」,而是「已知但没打补丁的老漏洞」。所以「及时更新」这件事,效果远好于「再多装一层防护」。
关于「可接受」的定义,值得提前写清楚。比如「能接受多久打不开」「能接受多慢」,这两个数一写下来,很多技术选择就自动有了答案,也不需要每次都重新讨论。
规则要「按程序版本选」。
最后提醒:任何方案都有失效的时候。所以除了「怎么做得更好」,还该想一句「如果这套不灵了,退到哪里」。有这个退路,选择会从容很多。
所以「版本不对,规则也会失效」。
还有一条:「规则文件」放在哪也有讲究。
「放错目录等于没开」,再看「验证」。
「改完要重新加载配置」。
所以「不重载等于没改」。
而<'rabisu'+'> 那种全手动环境,重载要自己记。
还有「权限」这件事。程序用最高权限跑,就等于一次失误就是全部损失。而把不同服务拆给不同账号,虽然麻烦一点,但能让一次失误只影响一小块,这个交换在任何场景下都划算。

五、权限与 404 的关系
「权限不对」也会表现为 404。
因为程序读不到文件时,有的框架返回 404。
再看「时间同步」。多台机器之间时间不准,日志就会乱序,排查时把因果搞反。所以哪怕只有两台,也该把时间同步配好,这件事一次配置、长期受益,几乎不需要维护。
所以「403 和 404」有时候是同一件事。
这一点最容易误导:明明是「权限不足」,却看到 404,于是继续在「路径」上找。而判断方法很简单——查程序日志里有没有「读取失败」的记录。有,就是权限;没有,才是路径。所以「404 不一定真的是「不存在」」这句话,能省掉大量排查时间。
判断方法:看程序日志里有没有「读取失败」。
有,就是权限问题。
关于「优化线路」,也要说清它的边界。优化能减少绕路,但改变不了物理距离,所以跨洋的底噪永远在那儿。想再快,只能换更近的机房,而不是买更贵的线路。
最后一句:网络问题有一半不在网络。看起来「网慢」,实际可能是「服务端处理慢」,而两者的区分方法只有一个——把请求拆成几段分别计时,看时间花在哪一段。
还有一个观念要纠正:安全不是「装了什么」,而是「少了什么」。少一个入口、少一个旧插件、少一个用不上的账号,暴露面就小一层。所以安全的动作里,「删」往往比「加」更有效。
再看「成本感」。同样一笔钱,花在「看得见的配置」和「看不见的稳定性」上,感受完全不同。而真正决定长期体验的,往往是后者,只是它不体现在参数表里。
而<'zji'+'> 那种整机产品,目录权限能精细控制。
再补一个容易被忽略的账:月费只是开始,续费价才是长期成本。很多方案首年优惠、次年回到原价,按三年算总支出可能差出四成。所以「便宜」这个结论至少要按两年来算,否则第一年省下的钱,第二年就还回去了。
再看「上传目录」。
「上传目录不可写」也会变成 404。
所以「权限和路径要一起查」。
还有一条:「归属」比「权限位」更常出问题。
而「归属错了」修起来只需一条命令。
再看「排查顺序」。
「先看日志,再改权限」。
所以「改之前先确认」。
而<'sixtynet'+'> 那种大配额产品,日志留得住,便于回溯。
再看「上传」。允许上传的站点,一定要把「上传目录」和「可执行目录」分开,并且上传目录不给执行权限。这一条几乎能挡掉大半个「传个脚本上来执行」的路子。
六、上线检查清单
最后给一份「上线当天逐条过」的清单。
一:首页能打开。
二:随机三个内页能打开。
三:一个静态资源能打开。
四:后台能登录。
五:上传能成功。
六:出站请求正常(邮件、回调)。
关于「重启」,也得有个共识:重启能解决很多问题,但它同时抹掉了「现场」。所以重启之前先看一眼关键指标、留一份日志,比直接重启要划算——尤其是那种「过几天又出现」的毛病。
六项里,第六项最容易被忘,而它决定「注册收不到验证码」「支付回调不来」这类「看起来像程序 bug」的问题。而它的排查往往要花一两个小时,因为前面五个都正常,很难想到是「出站不通」。所以清单里加这一条,能把上线当天的平均耗时缩短一大截。
判断方法:六项逐条勾,勾不全不上线。
而<'isvoro'+'> 那种面板,装完之后六项能快速验一遍。
第二项。「三个内页」是为了覆盖不同路由。
再看「丢包」。丢一点包带来的影响,往往比延迟高一点更明显,因为它会触发重传,把整条链路的节奏都打乱。所以测速表上如果只有延迟没有丢包,那张表其实不完整。
再说一句关于「口令」的。绝大多数被拿下的站点,入口都是弱口令或者长期不换的旧口令。而改一次口令只要两分钟,性价比高过任何防护手段,只是它不像装插件那样「看起来做了什么」。
关于「日志留存」,也是一样。出事之后想查「几天前谁来过」,前提是那几天的日志还在。所以日志留存时间本身就是一种安全能力,哪怕不做分析,也要先留得住。
最后一个建议:把每次决策的理由写下来,哪怕只有一句。三个月后回头看,那一句往往比结论本身更有价值,因为它解释了「当时为什么这么想」。
另一个常被漏掉的是「退出成本」。换商家时数据要搬、域名要改、证书要重签,一两天的功夫足够抵掉半年省下的差价。所以判断一个方案值不值,要连同「以后想走的时候走不走得掉」一起算进去,而这一项往往是最贵的。
所以「抽三个而不是一个」。
第五项。「上传」要测「能写能读」。
所以「传完要能看到图片」。
第六项。「出站」要单独测。
所以「发一封测试邮件」。
最后提醒:「首页正常」是最有欺骗性的状态。
而「多测几个」是拆穿它最便宜的办法。
再看「用户视角」。技术指标好看,不等于用户舒服。而用户的感受往往集中在「最慢的那一次」上,所以与其优化平均,不如先把最差的那一撮找出来。
还有一笔是「空闲成本」。为了避免高峰,很多人会按峰值买配置,结果一年里大部分时间资源是闲着的。而闲着的那部分,恰恰是最容易被砍掉的预算,砍掉之后再做弹性扩容,往往比一次性买满更划算。
还要算「扩容的单价」。有些方案起步价很低,但加一档内存、加一块盘的单价明显偏高,等你需要扩的时候就发现总价被反超。所以比价不能只比「入门那档」,还要看「下一档贵多少」。
还有一个常被忽略的支出:监控与日志的存储。指标数据和访问日志每天都在长,而它们往往和业务数据抢同一块盘。把这一块单独预留出来,能省掉后面好几次「盘满了要清谁」的纠结。
本文讨论网站 404 错误的分层成因与排查方法,不针对任何具体商家,也不对任何产品的部署便利性作评价与承诺。文中提到的四类 404 来源、三段定位法、伪静态与权限的关系以及上线检查清单均为通用参考;实际表现取决于 Web 服务配置、程序框架与系统环境,同一现象可能有多种成因。文中所述命令与配置修改需在了解其影响后执行,建议先在测试环境验证。本文不构成任何配置建议,亦不代表本站立场。因依据本文内容执行操作所产生的直接或间接损失,作者及本站不承担任何责任。
此内容由AI根据文章内容自动生成,并已由人工审核

喜欢
顶
难过
囧
围观
无聊
云服务器邮件一
云服务器证书装
标准手机罗盘怎
华灯初上夜游攻