博客换域名了?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]
```
把这个.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
(博客来的朋友优先通过!)
还木有评论哦,快来抢沙发吧~