博客换域名了?301重定向设置全教程,权重一滴不漏

前阵子有个朋友兴冲冲跑来跟我说:"我博客换了新域名,特别短特别好记,但收录全没了!"

我问他:"你做了301重定向吗?"

他一脸懵:"啥是301?"

好家伙,换域名不做301,等于搬了家没留地址——老读者找不到你,搜索引擎也懵了,辛辛苦苦攒的权重全打了水漂。

我自己之前也踩过这个坑。2024年那会儿把博客从www.xxx.com换成了短域名,没做301,结果百度收录从800多直接掉到个位数,花了整整两个月才恢复。那教训,刻骨铭心。

今天就把301重定向这个事儿从头到尾讲清楚,不管是换域名、换协议(http→https),还是改文章URL结构,都能用上。

301重定向到底是啥?

简单说,301就是一个"永久搬家通知"。

当用户或搜索引擎访问旧地址的时候,服务器会告诉它们:"这页面已经永久搬到新地址了,请去那边找。"

搜索引擎收到这个信号后,会把旧地址的权重、收录信息慢慢转移到新地址上去。注意,是"慢慢"——不是立刻生效,一般需要几周到几个月。

这跟302重定向完全不一样。302是"临时搬走",搜索引擎不会把权重转过去,甚至可能两个URL都收录,造成内容重复的问题。

所以记住:永久性变动用301,临时变动用302。 别搞混了。

什么时候需要做301重定向?

说几个最常见的场景,你看看有没有对上号的:

  • 换域名:老域名所有页面都要301到新域名对应页面
  • http换https:全站301跳转,这个应该是标配
  • 改URL结构:比如从 /post/123.html 改成 /archives/123.html
  • 合并文章:两篇内容类似的文章合并成一篇,旧文章跳到新文章
  • 删除页面:页面删了但有外部链接,301到相关页面而不是让它变成404

我见过很多人只做了首页的301,内页完全不管。这样只能保证首页权重转移,内页的收录和排名照样丢。所以要做就做全站301,别偷懒。

宝塔面板设置301重定向

用宝塔面板建站的朋友最幸福,因为设置301特别简单,点点鼠标就完事。

先说最常见的需求——全站http跳https

1. 登录宝塔面板,找到你的网站

2. 点击"设置" → "配置文件"

3. 在server段里加这段:

```nginx

if ($scheme = http) {

return 301 https://$host$request_uri;

}

```

4. 保存,重启Nginx

就这么简单。全站http请求都会被301到对应的https地址。

如果要换域名,把老域名的站点配置里加上:

```nginx

if ($host = old.com) {

return 301 https://new.com$request_uri;

}

if ($host = www.old.com) {

return 301 https://new.com$request_uri;

}

```

这样不管用户访问 old.com 还是 www.old.com 的任何页面,都会跳转到新域名对应的页面。`$request_uri` 会保留原始路径,所以 /post/123.html 会跳到 new.com/post/123.html。

对比一下各种301方案:

方案优点缺点适合场景
Nginx rewrite性能最好,服务器级别需要服务器权限宝塔/VPS用户
.htaccess简单,文件级配置仅Apache,性能稍差虚拟主机用户
PHP跳转不依赖服务器配置性能最差临时应急方案
WordPress插件零代码操作插件多了拖速度WP新手用户

Apache虚拟主机用.htaccess设置

如果你用的是Apache服务器(大多数虚拟主机都是),可以用.htaccess文件:

http跳https:

```apache

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

```

换域名301:

```apache

RewriteEngine On

RewriteCond %{HTTP_HOST} ^old\.com [NC]

RewriteRule ^(.*)$ https://new.com/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^www\.old\.com [NC]

RewriteRule ^(.*)$ https://new.com/$1 [L,R=301]

博客换域名了?301重定向设置全教程,权重一滴不漏-第1张图片-无双博客

```

把这个.htaccess文件上传到网站根目录就行。注意前面不要有空行,不然可能报500错误。

WordPress用插件设置301

不想碰代码?WordPress插件搞定一切。

推荐两个插件:

  • Redirection:免费,功能强大,支持正则匹配,能统计404错误
  • Simple 301 Redirects:更简单,适合只需要做几个页面跳转的情况

以Redirection为例,安装后进入"工具 → Redirection",在"添加重定向"里填旧URL和新URL,选择301,保存即可。

批量跳转的话,它支持正则表达式。比如旧URL是 /category/tech/ 跳到 /tag/tech/,可以用正则一次性搞定所有分类页的跳转。

Z-Blog怎么设置301

Z-Blog的话就比较折腾了,因为它没有那么多现成的插件。

最靠谱的方法是直接改Nginx/Apache配置,跟前面说的宝塔设置一样。

如果实在改不了服务器配置,可以在Z-Blog的include.php里加PHP跳转(性能不太好,但能用):

```php

// 在主题的include.php或全局include文件里

if ($_SERVER['HTTPS'] != 'on') {

$url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

header('HTTP/1.1 301 Moved Permanently');

header('Location: ' . $url);

exit();

}

```

不过说实话,能用服务器配置就别用PHP跳转,性能差距还是挺明显的。

设置完怎么验证?

301做好了不算完,得验证一下是否生效。

方法一:在线检测工具

用站长工具(chinaz.com)的"HTTP状态查询"功能,输入旧URL,看返回状态码是不是301,以及Location头是不是指向正确的新地址。

方法二:curl命令

在终端里执行:

```bash

curl -I https://old.com/post/123.html

```

看返回的头信息里有没有 `HTTP/1.1 301 Moved Permanently` 和 `Location: https://new.com/post/123.html`。

方法三:浏览器F12

打开浏览器开发者工具(F12),切到Network标签,访问旧URL,看状态码。注意要禁用缓存,不然可能看到的是缓存结果。

301重定向常见问题FAQ

Q1:301重定向多久能生效?

A:这个真没有标准答案。百度官方说法是"需要一段时间",实际上短的话1-2周能看到效果,长的话可能要2-3个月。Google那边一般2-4周。权重转移是渐进的,别急。

Q2:做了301但百度不收录新页面怎么办?

A:先去百度站长平台提交改版规则,告诉百度你的URL变化规则。然后在新站点上做好sitemap并提交。301只是告诉搜索引擎"搬家了",但你得主动告诉它们"搬去哪了"。

Q3:301跳转链能有多长?老域名→中间域名→新域名?

A:理论上可以,但千万别这么干。搜索引擎可能只跟踪1-2次跳转,链太长直接放弃。A→B→C这种,不如直接A→C。

Q4:做了301之后老域名还要继续续费吗?

A:如果你还想保住301的效果,老域名必须续费!域名到期后301就失效了,权重直接断。所以换域名前想清楚,要不要同时维护两个域名的费用。

Q5:301和canonical标签有什么区别?

A:301是真正的跳转,用户和搜索引擎都会到新页面。canonical是"建议搜索引擎把这个URL视为规范版本",用户访问不受影响。301用于页面真的搬家了的情况,canonical更多用于解决重复内容问题。


推荐阅读


301重定向搞不定?加我微信帮你

扫码加我微信,一对一帮你设置!

微信号:15207283116

(博客来的朋友优先通过!)