现在大家常用的用来测试域名跳转的工具, 大致可以分成几类, 其中包括在线的跳转检测工具, 还有浏览器里的开发者工具, 尤其是其中的Network面板, 另外还有curl这个命令行工具, 再就是Postman, 以及专业一点的SEO检测工具, 比如Ahrefs Site Audit。
对于大多数网站运营和技术人员而言, 推荐优先使用在线跳转检测工具配合curl命令行工具, 这样可以覆盖90%以上的跳转排查场景。
5款常用工具对比
标准操作步骤(以curl为例)
1. 做基础的时候, 先执行 curl -I -L https://yourdomain.com, 再去看看响应里面每一段跳转拿到的HTTP状态码, 也就是301、302、307这些数字是多少, 并且观察一下Location字段的值。
2. 进行指定协议方面的测试工作。需要分别对以http://开头的入口地址, 和以https://开头的入口地址这两个部分, 分开开展检验操作。主要目标是确认系统是否具备将访问统一通过301跳转机制导向至HTTPS的功能。
3. 指定UA模拟:添加 -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" 验证移动端是否存在差异化跳转。
4. 查看完整跳转链:使用 curl -I -L -o /dev/null -w "%{url_effective} %{http_code}\n" https://yourdomain.com,直接输出最终落点URL和最终状态码。
5. 要采取结合在线工具进行交叉验证的做法, 把同一个URL粘贴进Redirect Checker这里面去, 然后对比一下看到的结果到底怎样, 以此来确认确实没有任何遗漏的中间跳转环节存在。
注意事项与高频问题
DNS缓存干扰, 这是因为本地的DNS缓存可能会让使用者看到旧的跳转目标。
在做测试之前, 得先执行ipconfig /flushdns这个过程, 这步操作主要针对Windows系统, 或者是要执行sudo dscacheutil -flushcache这个过程, 针对的是macOS系统也可以。还可以去用在线工具来帮忙。要从外部的节点做检测工作。
HTTPS跳转死循环: 如果301目标还是http://, 那么就会出现循环的情况。在用 curl -I -L 这个命令的时候, 要是反复看到同一个URL, 那就是发生了循环跳转, 这时候需要去检查服务器的重定向规则。
JS跳转无法用curl检测:window.location 触发的跳转不会出现在HTTP响应中,必须使用浏览器开发者工具或Screaming Frog等可渲染工具。
在301与302选择这个问题上, 如果是需要进行永久性的跳转操作, 那么就应该使用301状态码, 而如果是临时的跳转需求, 则是可以使用302或者307状态码来做处理的。
从SEO也就是搜索引擎优化的场景角度来看, 使用301进行跳转的时候传递给搜索引擎的权重是比较稳定的, 所以建议在域名迁移完成之后, 统一都去使用301这样的处理方式即可。
选择建议
日常单次排查的时候, 直接利用在线跳转工具加上curl这个组合就能够搞定了, 而在进行自动化或者是CI集成方面呢, 就需要把 curl 命令封装成脚本, 然后把它们写入到 Jenkins 或者 Git CI 里面去, 最后在进行整站审计的过程当中, 应该使用的是 Screaming Frog 或者是 Ahrefs 来进行批量扫描操作, 等导出报告之后再把每条问题逐条修复掉。


