curl -sIL https://example.com/old | grep -iE '^(HTTP|location|server)' wp plugin list --status=active | grep -i redirection
一条旧地址在浏览器里连跳两次才到,第一次 301 来自 Nginx,第二次 301 来自插件,两个后台都能看到这条规则,谁也说不清该删哪个。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:插件把规则写进数据库,在 PHP 层拦截请求再发 301,Nginx 的规则在更前面就已经命中。两层都生效时用户要多等一个来回,访问日志里同一条地址出现两次。
「重定向插件冲突」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。同一份配置存在多处的,先确认改的是被加载的那一份。
处理上按这个顺序:先定一层做跳转,站点级规则统一放 Nginx 或统一放插件,别两边都写;用 curl 看每次响应的 Server 头和 Location,判断是哪一层发的;把插件里重复的规则导出备份后停用,只留一层;观察一周 404 日志,确认没有漏掉的旧地址。
确认没问题再收工,同一条旧地址只剩一次 301,响应头里只有一个 Location,跳转耗时降回一百毫秒内。
