做SEO久了,你会发现301重定向这个东西,说简单也简单,说复杂,坑真的不少。
很多人改了域名或者调了URL结构,流量直接掉一半,回头查才发现重定向根本没设对,或者根本没设。
这篇文章我尽量把我这些年实操下来的经验都写进去,帮助SEO人士更好地理解和应用这一技术。
不想了解技术细节的可以直接阅读:什么时候该用301 → 301重定向怎么设置 → 几个常见的坑,别踩 → 做了301之后,还要做这几件事,想要详细了解请全文阅读
新手用户阅读指南
什么是301重定向?
简单说,301是一个HTTP状态码,告诉浏览器和搜索引擎:这个页面永久搬家了,以后去新地址找。
具体的流程是这样的:用户或者Googlebot访问旧URL(例如:https://blog.topsucai.com/2026/),服务器返回”301 Moved Permanently”,同时在响应头里带上新地址(https://blog.topsucai.com/)。
浏览器收到这个信号,自动跳转过去新地址(https://blog.topsucai.com/)。
用户感觉不到什么,但搜索引擎会更新索引,把旧URL从其索引中移除,并用新URL取代。
对Google来说,301意味着几件事:旧页面不在了、内容移到新地址了、旧页面积累的所有链接权重要转移过去。
这最后一点,才是SEO里最值钱的地方。
SEO权重会损失吗?老实说
这个问题被问烂了。
早年间确实有说法认为301会损失一部分PageRank(排名),但Google的Gary Illyes在2016年已经明确说过:301重定向不再损失PageRank。
实际测试的结果也印证了这点。
我见过不少域名迁移的案例,只要重定向设置正确、目标页面内容相关,排名波动基本在一两个月内就会恢复,甚至有些反而涨了,因为把分散的权重集中了。
当然,短期内有波动很正常,别慌。
Google重新爬取、处理、更新索引需要时间,这跟你设没设好没关系。
什么时候该用301
出现这些情况:
- 域名迁移,比如从abc.com搬到xyz.com,必须全站301,没有商量的余地
- URL结构调整,动态URL换成静态的,或者改了目录层级
- HTTP升级HTTPS,这个现在几乎是标配了
- 统一www和非www,选一个版本,另一个301过去
- 内容合并,两篇相似的文章合成一篇,旧的301到新的
- 产品下架,别让它直接404,重定向到相关分类页或替代产品
有一个很多新手容易忽略的点:产品下架的时候,大家习惯性就让页面404了。
但如果那个页面有外链或者有历史流量,直接404就是白白扔掉权重。
找个相关的页面跳转过去,这个习惯养成了,流量会稳很多。
301 vs 302,别搞混
302是临时跳转,告诉搜索引擎:我临时跳过去,原来的地址还有效,继续给我保留索引。
两个的核心区别就一条:权重传不传。
301传,302不传(或者传得很慢、很少)。
什么时候用302:促销活动、A/B测试、网站临时维护。
活动结束要恢复原页面,用302。
但凡你打算永久换地址,就用301,别犹豫。
我刚开始做SEO的时候,有个项目改版,开发随手用了302,我也没注意检查。
结果两个月过去了,新页面排名就是上不来,Google一直在索引旧页面。
后来排查才发现问题出在这里。
改成301之后,大概三周开始有起色。
这个坑踩过一次就不会再忘了。
301跳转与302跳转的区别对比图表
| 对比项目 | 301重定向 | 302重定向 |
|---|---|---|
| 含义 | 永久跳转 | 临时跳转 |
| SEO权重传递 | 完全传递(几乎100%) | 不传递或仅部分传递 |
| 搜索引擎索引 | 更新到新页面,移除旧页面 | 保留旧页面,不更新索引 |
| 使用时间 | 长期 | 短期 |
| 使用推荐 | 网站迁移、URL结构更改、HTTPS升级、域名更换、内容合并、页面永久删除 | 促销活动、A/B测试、网站维护、设备适配(如移动端页面) |
301重定向怎么设置
1、Apache服务器(.htaccess)
大多数虚拟主机用的是Apache,找到网站根目录的.htaccess文件,直接加代码。
单个页面跳转:
Redirect 301 /old-page.html https://blog.topsucai.com/new-page.html整站HTTP跳HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.* )$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]注意:确保您的网站已安装SSL证书 ,否则会导致“不安全”警告 。
2、Nginx服务器
Nginx的配置在server block里改,性能上比htaccess更好,大型站推荐这种方式。
整站HTTPS跳转:
server {
listen 80;
server_name blog.topsucai.com topsucai.com;
return 301 https://$host$request_uri;
}这里多说一句为什么。
.htaccess的重定向每次请求都要触发 Apache 的 mod_rewrite 模块去逐行解析规则,规则越堆越多,解析开销就越大。
小站感觉不出来,但如果你有几千条规则,加上 Googlebot 密集爬取期间的并发请求,CPU 尖峰是真实存在的问题。
Nginx 在这点上天然有优势。
上面Nginx给的示例用的是return 301,而不是rewrite,这不是随手写的——return 直接返回响应,不走正则匹配,开销比rewrite小得多。
大型站做全站迁移时,短时间内可能有大量旧 URL 被集中爬取,全部触发重定向,服务器压力不可忽视。
能在 Nginx 层或者CDN层处理掉,就别让它落到应用层。
3、WordPress设置301
如果你用WordPress,最省事的方法是装Redirection插件,免费的,操作很直观。
它还会自动记录404错误,让你知道哪些URL在报错,方便你补设重定向。
Rank Math和Yoast也有内置的重定向管理,如果你本来就在用这两个插件,直接在里面设就行,不用再装额外的插件。
但如果是大型站,建议还是在服务器层设置,速度更快,不走PHP,响应效率高很多。
4、用Cloudflare的话
Cloudflare后台有”页面规则”或者”重定向规则”,可以不动源服务器就配置重定向,Shopify独立站、静态站用这个特别方便。
几个常见的坑,别踩
1、重定向链过长
A跳B,B跳C,C跳D——这种链式重定向很常见,也很麻烦。
每多一跳,响应时间就多一点,抓取预算也在消耗,权重传递效率也会降。
有条件的话,尽量把链路压到一跳,A直接跳D。
2、重定向循环
A跳B,B又跳回A。
浏览器会直接报错,搜索引擎也无法处理。
用Screaming Frog跑一遍就能发现这种问题。
3、什么都跳首页
这是最常见的懒操作。
把一堆404页面或者旧产品页全部301到首页,Google会把这个当软404处理——因为这些页面的内容根本和首页不相关,这种重定向没有意义,权重传递基本等于零。
尽量找最相关的目标页。
4、该用301用了302
上面已经说过了,但确实太多人犯这个错,再提一次。
5、怎么确认301设好了
最直接的方法是打开Chrome开发者工具,Network选项卡,访问旧URL,看状态码是不是301,以及Location字段指向的是不是正确的新地址。
如果要批量检查,用Screaming Frog是标准操作,爬一遍就能看到所有页面的状态码和跳转路径。
也可以用HTTP Status Checker这类在线工具,输入URL直接看重定向链路。
Google Search Console里也能看,”索引”报告下面有”重定向”页面的数据,能帮你判断Google有没有正确处理你的跳转。
做了301之后,还要做这几件事
很多人设完301就觉得完事了,其实还差几步。
1、内部链接要更新
301虽然能传权重,但它终究是一次额外的请求。
把网站内部所有指向旧URL的链接直接改成新URL,让链接直达目标,不绕路。
2、更新Sitemap,重新提交到Search Console
这一步能帮Google更快找到新页面,不用等着Googlebot自己慢慢爬过来。
因为光靠301等Googlebot自己把整站爬完,少则一两个月,多则更长。
地址更改工具相当于直接跟Google说:我搬家了,请优先处理。
实测下来,用了之后索引更新速度明显快于纯靠爬取。
用之前有几个前提要满足:
新旧域名都要在GSC里完成所有权验证,301要已经设好,新域名的Sitemap也要提交到位。
然后在GSC旧域名的工具入口「设置」页面里,找「地址更改」那一栏进行指向到新域名。
有一点要注意:
这个工具只适用于站点级别的迁移(就是两个不一样的域名进行迁移)
调整了URL结构、HTTP升级 HTTPS、www 与非 www 的切换,这些都可以不用。
举例:
可以用的情况
①网站内容和URL结构不变,仅仅是域名变了(例如:www.example.com/blog/abc 通过301重定向到 blog.topsucai.com.com/blog/abc)。
②你的博客原本在blog.topsucai.com,由于发展壮大,你购买了新域名 blog-topsucai.com,并把整个博客迁移过去。
不可以用的情况
①https://blog.topsucai.com/news/123.html 改成新域名:https://blog.topsucai.com/articles/123/(域名没有发生根本性改变,谷歌不需要地址更改工具来识别,只需做好全站的内部 301 重定向)
②从https://blog.topsucai.com 变成新域名:https://blog.topsucai.com(同域名下的 HTTP 到 HTTPS 迁移属于安全升级,谷歌的算法能够自动平滑处理,不需要也不允许使用地址更改工具)
最后,还有一点就是如果有重要的外部链接(比如高权重的外链),能联系到对方站长的话,顺手让对方更新一下链接地址,虽然301能传权重,但直接链接效果更干净。
3、301保留多久?建议至少12个月
大型站或者域名迁移,能留就一直留着。
外链是删不完的,总会有你不知道的老链接在某个地方指向旧地址,留着301能持续接住这部分权重。
301重定向常见问题(FAQ)
根据Google的官方声明,现代搜索引擎在处理301重定向时,能够传递绝大部分甚至接近全部的SEO权重。
虽然短期内搜索排名可能会有轻微波动,但长期来看,只要重定向设置正确且目标页面相关,权重损失可以忽略不计。
301重定向的生效时间因网站规模、搜索引擎抓取频率和重定向复杂性而异。
通常情况下,小型网站的重定向可能在几天到几周内被搜索引擎识别并处理。
对于大型网站或复杂的迁移,可能需要数月才能完全生效。
可以。
通过Apache的.htaccess规则、Nginx的配置文件、Cloudflare的页面规则或WordPress的重定向插件(如Redirection),都可以实现批量设置301重定向,以应对大规模的URL更改。
一旦301重定向被删除,搜索引擎可能会重新发现并索引旧URL。
如果旧URL不再存在或返回404错误,这会导致权重分散、用户遇到死链接,并可能损害网站的SEO表现。
因此,在确认所有外部链接和内部链接都已更新到新URL,并且搜索引擎已完全更新其索引之前,不应轻易删除301重定向。

