现象
网站首页可正常访问,但点击文章、产品或分类链接时,浏览器显示404 Not Found错误。直接访问带后缀的文件(如.html或.php)正常,但访问无后缀或特定目录结构的URL时无法加载。这通常是因为Web服务器未正确将动态URL转换为后端实际文件路径,即伪静态规则缺失或配置错误。
原因
Web服务器(Nginx/Apache/IIS)接收到URL请求后,若找不到对应的物理文件,且未配置重写规则(Rewrite/Redirect),就会直接返回404。常见原因包括:1. 未配置伪静态规则;2. 规则语法错误;3. 规则匹配顺序错误导致被其他规则拦截;4. 网站根目录权限不足或文件实际不存在;5. 缓存导致旧规则生效。
先自查(3 分钟)
首先确认文件是否真实存在。登录服务器或通过FTP查看网站根目录,确认目标URL对应的物理文件路径是否存在。例如,URL为 /article/123.html,检查根目录下是否有 article/123.html 文件。若文件存在但404,则是规则问题;若文件不存在,需检查程序生成逻辑或缓存。其次,检查浏览器控制台是否有其他报错,排除JS或CSS导致的假404。最后,确认DNS解析是否指向正确的服务器IP,排除域名指向错误。
解决步骤
以下以Ubuntu 22.04为例,根据Web服务器类型分别配置。请根据实际使用的CMS(如WordPress、ThinkPHP等)替换规则内容,此处提供通用及常见CMS示例。
若使用Nginx,编辑站点配置文件。找到 server 块,添加 location 规则。注意:修改前请备份原配置文件。
cd /etc/nginx/conf.d
cp default.conf default.conf.bak
vi default.conf
在 server 块内添加以下规则(以通用静态文件重写为例,若为WordPress请替换为对应规则):
location / {
try_files $uri $uri/ /index.php?$args;
}
若为ThinkPHP 6/8,常用规则如下:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
}
}
保存文件后,测试配置并重启Nginx:
nginx -t
systemctl restart nginx
若使用Apache,编辑虚拟主机配置文件或.htaccess文件。确保 mod_rewrite 模块已启用。注意:修改前请备份原配置文件。
a2enmod rewrite
systemctl restart apache2
在站点根目录创建或编辑 .htaccess 文件(需确认 AllowOverride 为 All):
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=/$1 [L,QSA]
若使用IIS(Windows Server 2019/2022),需安装URL Rewrite模块。编辑 web.config 文件。注意:修改前请备份原配置文件。
将上述代码插入 web.config 的
验证
清除浏览器缓存(Ctrl+F5)后访问之前404的页面。若页面正常显示,说明配置成功。若仍404,查看Web服务器错误日志。Nginx查看 /var/log/nginx/error.log,Apache查看 /var/log/apache2/error.log,IIS查看 IIS日志或事件查看器。确认是否有权限拒绝(403)或文件未找到(404)的具体路径提示。同时,使用 curl 命令直接测试服务器响应,排除浏览器插件干扰。
curl -I http://yourdomain.com/article/123
预防
1. 建立配置文件备份机制,每次修改前备份。2. 使用版本控制工具管理网站配置文件,便于回溯。3. 在测试环境验证新规则后再应用到生产环境。4. 定期检查Web服务器日志,发现潜在404趋势。5. 若使用CMS,优先使用官方提供的伪静态规则,避免手动编写错误。6. 启用Web服务器配置语法检查功能,如 nginx -t 或 Apache configtest,确保语法正确后再重启。
在奇异互动如何最快处理
若使用虚拟主机,登录会员中心,进入「虚拟主机控制面板」,检查「绑定域名」是否正确,确认FTP账号可正常上传文件。若怀疑是PHP版本或应用池问题,可使用「PHP版本切换」或「回收应用程序池」功能。若使用云服务器,进入「云服务器详情页」,使用「VNC控制台」登录系统进行排查,或通过「重置密码」确保SSH/RDP可登录。若自行排查困难,或修改配置后服务无法启动,立即提交工单:在会员中心点击「工单」,选择对应产品(虚拟主机或云服务器),在描述中附上:1. 404的具体URL;2. 使用的Web服务器类型及版本;3. 当前伪静态规则代码;4. 错误日志最后10行;5. 已执行的排查步骤。工单关联具体产品可加快工程师响应速度。

