迅睿CMS 伪静态配置与 404 排查
摘要
先说结论迅睿CMS 伪静态 404 基本都是三件事之一:规则没引入、规则与目录不匹配、伪静态优先级被其他 location 抢走。按顺序排查,10 分钟内能定位。一、Nginx 规则写法在站点配置文件的 server 块中加入(放在 loc
先说结论
迅睿CMS 伪静态 404 基本都是三件事之一:规则没引入、规则与目录不匹配、伪静态优先级被其他 location 抢走。按顺序排查,10 分钟内能定位。
一、Nginx 规则写法
在站点配置文件的 server 块中加入(放在 location / 之前):
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=$1 last;
}
}若站点在子目录,需相应调整前缀。
二、Apache 规则写法
在站点根目录的 .htaccess 中:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]注意:Apache 需确认 mod_rewrite 已启用,且目录配置里 AllowOverride All。
三、404 排查清单
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 首页正常,内页全 404 | 伪静态规则未生效 | 检查规则位置,重载 Nginx |
| 部分栏目 404 | 栏目别名与目录冲突 | 改别名或调整规则顺序 |
| 后台正常,前台 404 | 后台未开启伪静态开关 | 后台 → 系统设置 → URL 模式 |
| 图片、CSS 也 404 | 规则把静态资源也重写了 | 加 if (!-e $request_filename) 判断 |
| 改了规则仍 404 | Nginx 未 reload | nginx -t && nginx -s reload |
四、验证方法
- 命令行:
curl -I https://你的域名/栏目别名/,看返回码是 200 还是 404; - 直接访问
index.php?s=栏目别名,若能打开,说明是伪静态问题而不是程序问题; - 查看 Nginx 错误日志
error.log,确认是否命中 rewrite。
五、反向代理场景的坑
若站前有 CDN 或宝塔反代,真实 IP 与协议头可能丢失,导致程序生成错误 URL。需在 Nginx 中补:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;总结
伪静态问题的核心是先分清「程序问题」还是「服务器问题」。用 index.php?s=xxx 直连测试法,能一秒区分这两类,避免盲目改规则。
2026年10月22日 10:42
前后30天 · 点日期看归档
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日
11月20日
11月21日