Chrome 访问 /admin/maintenance 时为何跳转到项目首页?
结论
/admin/maintenance 在 Chrome 无痕窗口和 Brave 中可以访问,普通 Chrome 却仍会跳转。这种情况更像是普通 Chrome 配置文件中的缓存或扩展造成的。此前使用的 [R=301,L] 会发送永久重定向。如果 Chrome 曾收到该路径的 301 响应,即使 .htaccess 已恢复,浏览器也可能继续按缓存结果跳转。清除 Cookie 和网站存储不一定会清除 HTTP 缓存。
这只是根据浏览器表现作出的判断,目前还不能确定具体原因。
按顺序排查
-
清除 Chrome 缓存
在普通 Chrome 中打开“清除浏览数据”,将时间范围设为“时间不限”,勾选“缓存的图片和文件”后清除。Cookie 和网站存储已经清理过,可以暂时不必重复处理。重启 Chrome,再访问:
https://www.myproject.com/admin/maintenance -
检查请求是否发生重定向
打开 Chrome 开发者工具的“Network”面板,勾选“Disable cache”,然后访问该端点。查看请求状态码和响应头中的
Location:- 如果请求返回 301 或 302,且
Location指向项目首页,说明重定向仍由服务器或上游代理发出。 - 如果请求直接返回成功状态,但浏览器仍显示首页,检查后续请求、JavaScript 跳转和 Service Worker。
- 如果勾选“Disable cache”后问题消失,浏览器缓存可能是重要线索。
“Disable cache”通常只在开发者工具打开时生效。
- 如果请求返回 301 或 302,且
-
检查普通 Chrome 配置文件
如果清除缓存后问题仍然存在,可以先停用普通 Chrome 中的扩展再试,也可以新建一个 Chrome 配置文件进行测试。无痕窗口和普通窗口的扩展启用状态、缓存可能不同,因此无痕测试成功并不能单独证明问题一定来自 301 缓存。
-
核对服务器规则和实际请求路径
确认部署中的
public/.htaccess已恢复,并检查其他.htaccess文件、虚拟主机配置、反向代理或 CDN 是否仍有针对该路径的重定向。原规则RewriteRule .*\.php.* / [R=301,L]会匹配规则处理时路径中包含.php的请求;从规则本身看,它不明显匹配/admin/maintenance。是否有关,还需要结合实际请求和完整重写配置判断。
注意事项
问题描述中还出现了带空格的 /admin/ maintenance。请确认实际访问地址是 /admin/maintenance,并在 Network 面板中核对浏览器发出的请求路径。也可以从命令行请求该地址,检查响应状态和 Location,再与浏览器结果对照。测试时请使用实际可访问的主机名和正确路径。
备注:内容仅供参考。
