网站301重定向怎么设置?换域名那年,我差点把老排名全做没了

2023 年 4 月,我把博客换到了现在的域名。

换域名这事我在搬家那篇里写过流程,但有一件事我当时漏了,或者说,压根没想到——老域名上那几百个页面的 URL,换域名之后全部变成了 404。

后果来得比我想的快。换完不到一周,百度收录从 300 多掉到 100 出头,几个本来稳稳排在第一页的长尾词,直接没了影。那几天我天天盯着站长后台,心里就一个念头:辛辛苦苦养了两年的站,是不是要交代在这了。

救回来的关键,就是今天这篇要讲的:网站 301 重定向怎么设置。


先把 301 讲明白:它到底是个什么东西

301,是 HTTP 状态码里的一个,意思是“永久重定向”。

说人话就是:你告诉搜索引擎和浏览器——“这个老地址以后不用了,内容搬到新地址去了,请记住新地址,以后直接去那边。”

它有两个特别要紧的特性。

一是它会把“权重”传导过去。 这也是它跟 302(临时重定向)最本质的区别。302 的意思是“临时搬一下,老地址还在”,搜索引擎不会把老页面的权重算到新页面头上。所以换域名、改 URL 结构这种“永久性”的变动,必须用 301,不能用 302。用错这一个数字,等于把老站两年攒下的信任全丢了。

二是它要你主动去配,不会自己生效。 换了域名,系统不会自动帮你把老地址接过去。你不配,老 URL 就是打不开,搜索引擎只会理解成“这些页面没了”,然后从索引里一条条删掉。我那次就是这么翻车的。


这些情况,都必须上 301

不是所有改动都要 301,但下面这几种,一个都不能漏:

  • 换域名。 老域名所有页面 301 到新域名的对应页面。最典型的场景。
  • 改 URL 结构。 比如把固定链接从 ?p=123 改成 /post-name/。改完老链接必须 301 过去,不然老外链、老收录全废。
  • HTTP 换 HTTPS。 上了证书之后,让所有 http 请求 301 跳到 https,否则等于两个版本并存,权重被摊薄。
  • 带 www 和不带 www 统一。 这俩在搜索引擎眼里是两个站,得定一个主域名,另一个 301 过去。
  • 合并或删除页面。 内容并到别的页面时,老页面 301 到新页面,而不是让它变成 404。

我那次犯的,就是第一条——只换了域名,跳转一根手指头都没动。


具体怎么设置:三种环境,对号入座

设置方式取决于你的服务器环境。最常见的三种我都写上,你挑自己那套。

方法一:WordPress 插件(最省事)

用 WordPress 的话,装一个 Redirection 插件,就能可视化管理跳转,不用碰一行代码。

装好后进插件设置,加一条规则:来源填老 URL,目标填新 URL,类型选“301 永久重定向”,保存即可。页面多的话,用它的规则匹配,或者导入一份 URL 对照表批量处理。

改固定链接这种场景,这个插件特别好使——它能在你改动之后,把原来的老链接自动记录下来并跳转。但有个前提:你得在改之前先把它装好、让它把老链接记下来。 改完了才装,它上哪知道老链接长啥样?这个顺序,别搞反。

方法二:Nginx 配置(宝塔环境)

用 Nginx 的话,在站点配置文件里加一段规则。换域名的场景大概这么写:

server {
    listen 80;
    server_name 老域名.com;
    return 301 https://新域名.com$request_uri;
}

$request_uri 的作用,是把原来页面的完整路径原样带过去。这样 老域名.com/abc/ 就会跳到 新域名.com/abc/,一条规则管全站,不用一个个页面去写。

这个变量是关键。我第一次手写的时候把它漏了,结果所有老链接全跳到了新域名首页——几百个页面挤到同一个地址,等于白配。宝塔里改这个不算难,按部署教程找到站点配置文件就行。

方法三:.htaccess(Apache 环境)

Apache 环境,改网站根目录的 .htaccess,加:

RewriteEngine On
RewriteRule ^(.*)$ https://新域名.com/$1 [R=301,L]

$1 跟前面那个 $request_uri 是一个道理,代表原路径。


配完一定要验证,别拍脑袋收工

配完别急着关电脑,验证这一步不能省。用 curl 看返回头最直接:

curl -I http://老域名.com/某个页面/

返回的第一行里出现 301,并且有一行 Location: https://新域名.com/某个页面/,那就对了。重点盯 Location 后面那串地址——它必须带着原来的页面路径,不能是光秃秃的首页。

顺手再查两件事:

  • 有没有跳转链。 比如 A→B→C,每多跳一次,权重就多损耗一点。理想状态是一步到位。
  • 有没有死循环。 手一抖把 A 跳到 B、B 又跳回 A,网站直接打不开。这个坑我用 .htaccess 时踩过一次,查了大半天才揪出来。

跳转做完,还有一件事别忘

301 配好了,最好主动去告诉搜索引擎你“改版了”。

到百度搜索资源平台,在普通收录里提交新域名的 sitemap;有站点改版相关工具的话,按提示也提交一下。这能加快新域名的收录,把那段落流量真空期尽量缩短。

我那次就是没及时做这些,新域名的排名恢复,硬生生拖了快两个月。301 是救命的,但救命需要时间,别指望一夜之间满血复活。


如果你正准备换域名、改固定链接,或者刚从 http 转到 https,记住一件事:动手之前,先把 301 规则想清楚、配好,再动手。 顺序反了,代价就是重新养站。配完用 curl 验一遍,最后去搜索资源平台提交一次。

前后花不了半小时,可它保住的,是你过去一两年攒下的所有排名。

首发于 wujianzhan.com。