路由与跳转链体检器

nginx -t 通过 ≠ 网站能打开。 我们自己的后台地址 /admin 长期是坏的:301 跳到 /admin/,而那是个真实目录、没有首页文件,浏览器直接 403 白屏—— 语法检查全绿,日志里却写满 "directory index is forbidden"。 这个工具给你一份逐跳打印状态码的 curl 体检脚本,外加对应故障的 nginx 修复片段。

免费 · 无需登录 本地生成 · 内容不上传 对应事故 · 后台地址 301→403 白屏

1站点与路径

建议成对写:/x 和 /x/ 都要测,两者行为经常不一样。

2nginx 修复选项

结果体检概览

输出curl 跳转链体检脚本

0 行
—
服务器或本机跑都行:bash route-check.sh。每一跳的状态码和 Location 都会打印出来。

输出nginx 修复片段

0 行
—

速查看到这个状态,先查这几处

现象最常见的根因怎么确认
301 → 带斜杠 → 403路径名是真目录,try_files $uri $uri/ 触发目录重定向,目录里又没有 index 文件ls /var/www/站点/该目录 看有没有 index.html
重定向次数过多精确 location 的 301 与 try_files 内部重定向互相套娃脚本里看 Location 是不是回到上一个地址
干净 URL 404,带 .html 正常try_files 少写 $uri.html补上 try_files $uri $uri.html $uri/ =404;
.html 被 301 到错的干净 URLlocation 里用 if 做正则判断,覆盖了 $1 捕获组把 if 判断移出该 location,或改用 map
某个前缀路径没走预期的 location正则 location 抢在 ^~ 前缀前命中(^~ 会压制正则,但普通前缀不会)nginx -T | grep -n location 看顺序与类型
403 且日志写 forbidden by ruledeny 规则或文件权限看 error log 的具体行,别猜
这个坑我们踩过

1 · 后台地址一直是 403。/admin 被 301 到 /admin/,而 /admin/ 是真实目录(里面放着 data/),没有 index 文件 → 403 白屏。只有 /admin.html 能进。

2 · 修法是内部改写,不是加 index。rewrite ^/admin/?$ /admin.html last; 让 /admin 和 /admin/ 都直达文件,登录保护一层不变。

3 · 语法检查查不出这类问题。nginx -t 只看语法,重定向链、目录索引这类逻辑错误它全绿。改完必须真发请求看状态码和跳数。

4 · 成对测。/x 与 /x/ 是两个不同的 URI,命中规则可能不同,两边都要 200。