先看现象。站点从 old.com 迁到 new.com,同时把 /archives/123 改成 /p/123,直接写成一条 301 从旧域名旧路径跳到新域名新路径,结果外链权重两个月没并过来。
这类报错背后常见的原因有几处,逐个排除就行。跨域名加改路径合成一跳,蜘蛛难以判断新旧对应关系。也可能是部分外链只指向旧域名首页,没有路径可匹配。
另外,新旧域名同时可访问,canonical 还不一致。
少数情况下是跳转规则按顺序匹配,先命中了旧路径的规则。
动手时先分别验证两种跳转的落点
curl -sIL 'https://old.com/archives/123' | grep -E 'HTTP/|location'
做域名级 301 保留原路径
server { server_name old.com; return 301 https://new.com$request_uri; }
再做路径级 301 到新结构
rewrite ^/archives/(\d+)$ /p/$1 permanent;
剩下的就是确认旧域名只剩一跳
curl -sIL 'https://old.com/archives/123' | grep -c '^HTTP'
怎么算真的好了,看的是同一批现象。旧域名请求一跳到达新域名新路径,canonical 与落地页一致,三个月后旧域名索引量降到个位数。
补一句。换域名和改路径叠在一起时,先做域名再改结构,分两步走信号更清楚,出问题也好回滚。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
