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跳转 不传递 仅前端跳转 蜘蛛可能不跟

行动建议

  1. 检查站点有没有该用301却用了302的地方,立刻改过来
  2. HTTP版本必须301到HTTPS,这是基本功
  3. 换域名前先把URL映射表做出来,没有映射表别动手
  4. 高权重页面单独配置精确301,别用通配规则糊弄
  5. 迁移后去百度站长平台提交改版规则,加速权重转移
  6. 301配置完用抓取诊断工具验证,确认跳转正常