301重定向配置全攻略:权重传递、URL迁移、HTTPS跳转一次讲透
去年帮一个站换域名,旧域名权重PC端BR6、移动端BR5,换完域名3个月后新域名权重恢复到BR5/BR4,流量只流失了8%。同行换域名普遍掉权50%以上,差距就在301重定向的细节处理上。
301这玩意配置不难,难在细节。今天把该讲的都讲透。
301和302到底啥区别
很多人分不清301和302,用混了后果很严重。
301永久重定向:告诉搜索引擎”这个页面永久搬家了,权重转移给新页面”。百度和谷歌都会把旧URL的权重转移到新URL。
302临时重定向:告诉搜索引擎”页面临时挪一下,还会回来”。权重不转移,旧URL依然保留索引。
该用301的地方用了302,权重不转移,新页面死活上不去排名。该用302的地方用了301,旧页面权重没了,临时活动结束回不来。
铁律:永久性的URL变更用301,临时性的跳转用302。SEO场景下90%都是用301。
301的三大应用场景
场景一:HTTP跳HTTPS
全站HTTPS是标配,HTTP版本必须301到HTTPS。
# nginx配置
server {
listen 80;
server_name www.example.com example.com;
return 301 https://www.example.com$request_uri;
}
# Apache配置(.htaccess)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
场景二:不带www跳带www
或者反过来,选一个作为主域名,另一个301过去。必须统一,否则百度可能把两个域名当成两个站,权重分散。
# 不带www跳带www
server {
listen 443 ssl;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
场景三:URL规则改版
这是最复杂的场景,老URL要一对一301到新URL,不能整站统一跳首页。
# 旧URL: /article.php?id=123
# 新URL: /article/123.html
# nginx用map做规则映射
map $arg_id $new_url {
default "";
123 /article/123.html;
124 /article/124.html;
125 /article/125.html;
}
server {
location ~ ^/article\.php$ {
if ($new_url != "") {
return 301 https://www.example.com$new_url;
}
}
}
URL量大的时候用map不现实,建议用rewrite规则配合数据库映射。
整站迁移零权重流失方案
换域名是最考验301功底的场景,我把那次的完整方案拆出来。
第一步:URL映射表
把旧域名的所有URL列出来,对应新域名的URL,做成映射表。这个表是整个迁移的核心。
| 旧URL | 新URL | 状态 | 优先级 |
|---|---|---|---|
| /about | /about-us | 已映射 | 高 |
| /product/123 | /products/123 | 已映射 | 高 |
| /news/2023/01/xxx | /blog/xxx | 已映射 | 中 |
| /old-page | /new-page | 已映射 | 中 |
| /search?q=xxx | 无对应 | 屏蔽 | 低 |
第二步:分批配置301
别一次性全上,分批配置分批验证。我先配置了高权重页面(首页、栏目页、Top100流量页),确认权重传递正常后再配剩下的。
# 整域名301到新域名(兜底规则)
server {
listen 443 ssl;
server_name old-domain.com www.old-domain.com;
# 精确匹配的高优URL
location = /about {
return 301 https://www.new-domain.com/about-us;
}
# 规则匹配的URL
location ~ ^/product/(\d+)$ {
return 301 https://www.new-domain.com/products/$1;
}
# 兜底:其他所有URL跳新域名首页
location / {
return 301 https://www.new-domain.com$request_uri;
}
}
第三步:百度站长平台提交改版
配置完301,去百度搜索资源平台提交”网站改版”规则,告诉百度新旧URL的对应关系。这步能加速权重转移,不提交的话百度要自己慢慢发现。
第四步:监控数据
迁移后盯三个数据:收录量、排名、流量。正常情况下:
- 第1周:收录量小幅波动,流量下降10-20%
- 第2-4周:收录量开始恢复,排名逐步回升
- 第2-3个月:数据基本恢复到迁移前水平
301常见配置错误
错误1:301跳转链
A跳B,B跳C,C跳D,形成跳转链。每次跳转都损耗权重,百度最多跟5次跳转。正确做法是A直接跳D。
错误2:301和canonical混用
既配了301跳转,又在页面里写了canonical指向另一个URL。百度会困惑到底以谁为准,可能两个都不认。
错误3:301到不相关页面
旧URL是”手机壳”的页面,301到了”电脑包”的页面。这种不相关跳转百度不传递权重,还可能判作弊。
301重定向类型对比表
| 类型 | 状态码 | 权重传递 | 适用场景 | 收录影响 |
|---|---|---|---|---|
| 301 | 永久 | 全量传递 | 域名迁移、URL改版 | 旧URL移除,新URL收录 |
| 302 | 临时 | 不传递 | 临时活动、A/B测试 | 旧URL保留 |
| 307 | 临时 | 不传递 | HTTP方法保持的跳转 | 旧URL保留 |
| 308 | 永久 | 全量传递 | HTTP方法保持的跳转 | 旧URL移除 |
| Meta refresh | 永久 | 部分传递 | 无法配服务器时 | 见效慢,不推荐 |
| JS跳转 | 不传递 | 仅前端跳转 | 蜘蛛可能不跟 |
行动建议
- 检查站点有没有该用301却用了302的地方,立刻改过来
- HTTP版本必须301到HTTPS,这是基本功
- 换域名前先把URL映射表做出来,没有映射表别动手
- 高权重页面单独配置精确301,别用通配规则糊弄
- 迁移后去百度站长平台提交改版规则,加速权重转移
- 301配置完用抓取诊断工具验证,确认跳转正常