oneweekonething.com 主域跳转排查报告

域名 oneweekonething.com 现象 跳转 → notes 子域 服务器 阿里云 · nginx 状态 已定位,待浏览器端确认 敏感信息已脱敏
一句话结论:线上服务器(nginx)、DNS、页面代码三层均已实测确认不存在任何跳转;用户浏览器看到的跳转,最可能是站点上线初期被浏览器缓存的 301 永久重定向——浏览器本地直接回放跳转、请求根本不经过服务器,因此清一次浏览器缓存即可恢复。

01问题概述

现象描述

在浏览器中访问 https://oneweekonething.com/(主域落地页「一周一事」),页面被自动带到 https://notes.oneweekonething.com/(AI 技术笔记站),落地页无法展示。

要素内容
入口 URLhttps://oneweekonething.com/
跳转目标https://notes.oneweekonething.com/
复现环境macOS,Chrome 与 Safari;本机运行 fake-ip 模式代理(Clash/Surge 类)
关键矛盾浏览器会跳转,而 curl 直接请求同一 URL 返回 200,不跳

排查目标:确定跳转发生在哪一层——DNS、服务器(nginx)、页面代码,还是客户端(浏览器缓存 / 代理 / 扩展),并给出对应处理方案。

02排查过程与证据

2.1 HTTP 层:8 种请求组合全部 200,无跳转

对主域做了全覆盖请求测试(HEAD 与 GET 各测,GET 用于排除「仅对 GET 生效」的应用层跳转),全部直接返回 200,响应中无 Location 头:

测试组合方式结果结论
https:// 主域,curl 默认 UAHEAD200 · 无 Location无跳转
https:// 主域,Chrome UAHEAD / GET200非 UA 条件跳转
http:// 主域(80 端口)HEAD / GET200非协议跳转
https:// www 子域HEAD200www 无跳转
带 Accept-Language: zh-CNHEAD200非语言条件跳转
真实 GET,记录 redirect_urlGET200 · redirect 为空链路无任何跳转
nginx 默认站点(随机 Host 访问 IP)GET404无「兜底重定向」规则
notes / key 子域GET200子域为独立应用,正常

2.2 DNS 层:四个域名同一台服务器,不存在 DNS 级跳转

本机 dig 首次返回 198.18.0.x——这是 fake-ip 保留网段(198.18.0.0/15),说明本机 DNS 已被代理接管,不代表真实公网解析。改用 DoH(AliDNS / Google DNS)直查,得到真实记录:

oneweekonething.com A → *.*.*.*(已脱敏) ┐
www.oneweekonething.com A → 同一 IP ├─ 同一台阿里云服务器
notes.oneweekonething.com A → 同一 IP │ nginx 虚拟主机分流
key.oneweekonething.com A → 同一 IP ┘
NS: 阿里云 DNS(主机名已隐去) · AAAA(IPv6): 无
DNS 层判断

四个域名解析到同一个公网 IP(已脱敏),跳转只能由 nginx 按 server_name 分流实现;DNS 层本身不可能产生「主域 → notes」的跳转。

2.3 页面代码层:线上 HTML 无任何跳转逻辑

页面上到 notes 的引用全部是正常的 <a href> 链接(hero 按钮、导航、产品卡片、页脚),需要用户点击,不会自动跳转。

2.4 Git 历史:全部 5 个初始版本均无跳转代码

09-21 17:07
初始提交 3d78787 —— landing page 含 SEO/GEO,已检查:无跳转
09-21 17:27
采纳 Vite 工作流 17af162 —— 构建方式变更,页面无跳转
09-21 19:21
Refine 品牌页 7704ed0 —— 无跳转(后被 revert)
09-21 19:32
Revert 26a8174 —— 回滚上一版,无跳转
09-21 19:37 → 20:08 部署
Restore 审定版 bcacfaf —— 服务器文件 Last-Modified 为 20:08 前后(CST),与该次上传吻合,即当前线上版本 9 月 21 日晚间才上线

2.5 服务端兜底行为:默认站点返回干净 404

用随机 Host 直接访问服务器 IP,nginx 默认站点返回 404 而非重定向——服务器上不存在「未知来源一律跳 notes」的兜底规则。notes 子域是独立的 SSR 应用(「AI Notes 内容索引」),key 子域也正常响应 200。

03根因结论

根因(最高概率):浏览器缓存的 301 永久重定向。 301 会被浏览器以持久缓存记录;之后每次访问该 URL,浏览器不再请求服务器、直接本地回放跳转。这正好解释核心矛盾——「浏览器跳、curl 不跳」:curl 每次都真实请求,拿到的是修好之后的 200。

时间线为何吻合

当前线上版本是 9 月 21 日晚间才部署的,且当天经历了 Refine → Revert → Restore 的高频改动。若更早的某个时刻(如落地页尚未上传、只有 notes 应用在线时)服务器或临时配置下发过一次 301 → notes,浏览器就会把它缓存下来;即使服务器此后修复,缓存仍在本地生效。

可能性排序

假设验证证据可能性
① 浏览器缓存 301服务端/代码/DNS 全部排除;站点上线时间与问题出现时间吻合高
② 浏览器扩展重定向扩展仅影响浏览器,不影响 curl;待无痕窗口对照排除低
③ 代理工具 rewrite 规则curl 经同一代理链路(TUN/fake-ip)实测无跳转,基本排除基本排除
④ 服务端条件跳转(UA/语言等)8 组请求组合实测均 200已排除
⑤ 页面 meta/JS 跳转线上 HTML 与全部 git 版本均无跳转代码已排除
⑥ DNS 层跳转四域名同 IP,无 IPv6,NS 为阿里云已排除

04处理方案

4.1 三十秒诊断(先做)

  1. 开无痕/私人窗口(Chrome / Safari 均为 Cmd + Shift + N),访问主域。
  2. 不跳 → 坐实缓存 301,按 4.2 / 4.3 清理即恢复;仍跳 → 与缓存无关,直接跳到 4.4 深度排查。

4.2 Chrome 清理

  1. DevTools 单站修复(免清数据,优先):新标签页打开 Cmd + Option + I → Network 面板 → 勾选 Disable cache → 保持 DevTools 开着,地址栏访问主域。真实请求拿到 200 后,旧跳转缓存即被覆盖。
  2. 清除缓存:Cmd + Shift + Delete → 时间范围选「全部时间」→ 勾选「缓存的图片和文件」(不勾 Cookie,避免登出)→ 删除数据。
  3. 完全退出重开:Cmd + Q 退出 Chrome 再启动——部分跳转缓存在进程内存里,不重启清不掉。

4.3 Safari 清理

  1. 开启开发菜单(一次性):Safari → 设置 → 高级 → 勾选「在菜单栏中显示‘开发’菜单」。
  2. 清缓存:菜单栏 → 开发 → 清除缓存(Option + Cmd + E)。
  3. 清站点数据:Safari → 设置 → 隐私 → 管理网站数据 → 搜索 oneweekonething → 移除。
  4. 完全退出重开:Cmd + Q 再启动。备选:开发 → 显示 Web 检查器 → 网络标签勾选忽略缓存后刷新一次。

4.4 清完仍跳:与浏览器无关,查系统层

DNS、hosts、代理是全系统共享的,Safari 与 Chrome 会一起中招:

验收标准:两个浏览器正常窗口访问 https://oneweekonething.com/ 均直接展示落地页(Network 面板第一条请求为 200,无 redirect),即为彻底恢复。

05附录:排查命令

① 跳转链路追踪(HEAD / GET 各一遍)
# HEAD:看状态码与 Location 头
curl -sIL https://oneweekonething.com/

# GET:排除仅对 GET 生效的应用层跳转
curl -s -o /dev/null -w "code=%{http_code} redirect=%{redirect_url}\n" https://oneweekonething.com/

# 换 UA / 协议组合复测
curl -sIL -A "Mozilla/5.0" http://oneweekonething.com/
② 真实公网 DNS(绕过本机代理 fake-ip)
curl -s "https://dns.google/resolve?name=oneweekonething.com&type=A"
curl -s "https://dns.alidns.com/resolve?name=oneweekonething.com&type=A"
curl -s "https://dns.google/resolve?name=oneweekonething.com&type=AAAA"
③ nginx 默认站点与证书
# SERVER_IP = 服务器公网 IP(已脱敏)
# 随机 Host 打服务器 IP:返回 404 说明无兜底重定向
curl -sI -H "Host: random-test.invalid" http://<SERVER_IP>/

# 证书 SAN 覆盖范围
echo | openssl s_client -connect <SERVER_IP>:443 -servername oneweekonething.com 2>/dev/null | openssl x509 -noout -ext subjectAltName
④ 客户端侧排查
# hosts 劫持
grep oneweekonething /etc/hosts

# 页面代码快速体检(应全部无输出)
curl -s https://oneweekonething.com/ | grep -inE "http-equiv.*refresh|location\.(href|replace|assign)"
curl -s https://oneweekonething.com/ | grep -ic serviceworker
← 返回内容索引