💡 核心摘要:重定向不是单纯的跳转体验问题,它会参与 Google 对规范网址的判断。永久迁移、域名合并、URL 规范化应优先用服务器端
301或308;临时活动、服务维护和短期替换应使用302、303或307。只有在无法控制服务器时,才考虑meta refresh、JavaScript 或 crypto 重定向。
一、先判断重定向目的
配置重定向前,先明确它是永久变更还是临时引导。永久变更通常包括换域名、合并网站、删除旧页面并迁移到新页面、统一首页或 URL 版本。
临时重定向则适合服务短期不可用、活动页临时替换、A/B 或运营活动。这个判断会影响 Google 在搜索结果中保留旧 URL,还是逐步把目标 URL 当作新规范页。
💡 不要把所有跳转都写成
301。状态码应表达业务事实,而不是只追求“SEO 看起来更强”。
二、永久和临时信号不同
Googlebot 会跟随永久和临时重定向,但索引系统对它们的理解不同。永久重定向会更强地提示 Google:目标 URL 应成为规范网址,并在搜索结果中展示新地址。
临时重定向则告诉 Google:源 URL 仍可能回来。Google 通常不会只因为临时跳转就把搜索结果里的源页面替换掉,但如果还有其他规范化信号,目标页仍可能被编入索引。
常见选择
永久迁移:301 或 308
临时跳转:302、303 或 307
即时 meta refresh:可被视作永久信号
延迟 meta refresh:可被视作临时信号
JavaScript 跳转:兜底方案
Crypto 重定向:最后兜底,不应主动依赖
⚠️ 迁移、canonical、Sitemap 和内链要一致。旧 URL
301到新 URL,但 Sitemap 仍提交旧 URL,会制造混乱信号。
三、优先使用服务器端重定向
服务器端重定向最容易被 Google 和浏览器稳定识别。只要你能控制服务器、CDN、托管平台或后端路由,就应优先在这一层处理,而不是让页面加载后再跳。
301 和 308 适合永久迁移。302、303、307 适合临时跳转。很多 CMS、Blogger、Shopify 或托管平台也提供内置重定向配置,应优先使用平台支持的正式能力。
PHP 示例
<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.example.com/new-url');
exit();
Apache 示例
Redirect permanent "/old" "https://example.com/new"
Redirect temp "/promo" "https://example.com/promo-temporary"
NGINX 示例
location = /old {
return 301 https://example.com/new;
}
💡 上线前用
curl -I检查状态码和Location,不要只在浏览器里看“能跳过去”。
四、meta refresh 是次优替代
如果无法实现服务器端重定向,可以考虑 meta refresh。Google 会区分即时和延迟两类:0 秒通常更接近永久重定向信号,延迟几秒则更接近临时重定向信号。
这类跳转应放在 HTML 的 <head> 中,或者通过 HTTP Refresh 标头输出。它适合托管环境受限、无法改服务器配置但仍能改页面 HTML 的场景。
即时 meta refresh
<!doctype html>
<html>
<head>
<meta http-equiv="refresh" content="0; url=https://example.com/new-location">
<title>Moved</title>
</head>
</html>
延迟 meta refresh
<meta http-equiv="refresh" content="5; url=https://example.com/temporary-location">
⚠️ 如果你能配置服务器端
301或302,就不要为了方便改用meta refresh。
五、JavaScript 只能作为兜底
JavaScript location 跳转依赖页面被抓取后再由渲染系统执行。Google 会尝试渲染页面,但渲染可能因为资源阻断、超时、脚本错误或环境差异失败。
因此,只有在无法使用服务器端重定向和 meta refresh 时,才应使用 JavaScript 重定向。它不适合作为网站迁移、域名合并或重要规范化的主方案。
JavaScript 示例
<script>
window.location.href = "https://www.example.com/new-location";
</script>
💡 JavaScript 跳转上线后,要用 Search Console 的网址检查和实际抓取日志确认 Googlebot 是否到达目标页。
六、理解 crypto 重定向
用户给出的链接定位到 #cryptoredirects,这部分是文档里最容易被误解的内容。crypto 重定向不是加密货币相关能力,而是一种“用页面正文告诉用户我们搬家了,并放一个新链接”的伪重定向。
它的典型形式是在旧页面上写一段说明,并链接到新页面。Google 可能会把这种模式当作迁移信号,但并不稳定,也不是所有搜索引擎都会把它视为正式重定向。
crypto 重定向示例
<p>
我们已迁移到新页面:
<a href="https://newsite.example.com/new-page">查看新内容</a>
</p>
⚠️ 除非别无选择,不要依赖 crypto 重定向来告诉搜索引擎内容已经迁移。先联系托管商,确认是否能配置正式重定向。
七、处理备用网址和旧品牌
重定向后,Google 会同时理解来源 URL 和目标 URL。其中一个会成为规范网址,另一个可能成为备用名称。对用户来说,旧域名或旧路径可能仍有识别度。
这意味着迁移后偶尔看到旧网址出现在搜索结果中,不一定是错误。只要永久重定向、canonical、内链和 Sitemap 都指向新 URL,旧名称通常会随着用户习惯变化逐步淡出。
💡 迁移后不要因为短期还看到旧域名就频繁改规则。先确认状态码稳定、链路短、目标页相关,再持续监控。
八、上线前后验证重定向
重定向验收要看三件事:状态码是否符合目的,目标 URL 是否最相关,链路是否足够短。不要把大量旧 URL 全部跳到首页,这会损害用户体验,也会让 Google 难以理解内容迁移关系。
大型迁移应建立旧 URL 到新 URL 的映射表。上线后抽查核心页面、外链页面、高流量页面、Sitemap URL 和不同模板页面,确认没有循环跳转、链式跳转或跳到错误目标。
检查命令
curl -I https://example.com/old-url
curl -L -I https://example.com/old-url
💡
curl -I看第一跳状态和Location,curl -L -I看最终落点和是否存在重定向链。
📌 核心收获
- ✓ 先判断永久还是临时:这决定 Google 更可能展示源 URL 还是目标 URL。
- ✓ 服务器端重定向优先:
301/308用于永久,302/303/307用于临时。 - ✓ meta refresh 是替代方案:即时更像永久,延迟更像临时。
- ✓ JavaScript 不适合主迁移:它依赖渲染,Google 可能看不到跳转。
- ✓ crypto 重定向只能兜底:它更像说明链接,不是可靠的正式重定向。
- ✓ 迁移信号必须一致:重定向、canonical、Sitemap、内链和目标页相关性要统一。
🚀 立刻行动
- 导出需要处理的旧 URL 清单,给每个 URL 标注目标页、迁移原因和永久/临时类型。
- 优先在服务器、CDN、托管平台或 CMS 中配置重定向;无法配置时再评估
meta refresh。 - 对永久迁移使用
301或308,对短期替换使用302、303或307。 - 用
curl -I抽查状态码和Location,用curl -L -I检查最终落点和跳转链长度。 - 更新 Sitemap、canonical、站内链接和导航,确保它们指向最终规范 URL。
- 在 Search Console 中抽查旧 URL 和新 URL,确认 Google 能抓取目标页并逐步理解迁移关系。
来源:重定向和 Google 搜索 | 本文为知识提炼与重新表达
RELATED / 相关推荐
接着读这些
按同一分类、系列与标签为你挑选。
更改网址的网站迁移实战指南
网站改版改动 URL 时,必须先做旧新网址映射,再上服务器端永久重定向,同时更新内部链接、Sitemap、canonical 和外部入站链接。
控制内容是否进入 Google
控制内容进入 Google 要先区分目标:删除内容、限制访问、阻止索引、屏蔽媒体资源、退出特定 Google 产品,或临时移除已展示结果。
JavaScript SEO 基础排查指南
JavaScript 网站要被 Google 正确理解,必须让关键内容、链接、标题、canonical、状态码和结构化数据在抓取、渲染、索引链路中稳定可见。