301重定向是永久性重定向,告诉搜索引擎和浏览器”这个页面已经彻底搬家了,去新地址找”。配置错误会导致流量丢失或SEO惩罚,这里记录几种常见场景下的配置方法。
Nginx
在server块或location块添加:
server {
listen 80;
server_name old-domain.com;
return 301 https://new-domain.com$request_uri;
}
如果只想重定向某个路径:
location /old-path/ {
return 301 /new-path/;
}
检查配置语法后重载:
nginx -t
systemctl reload nginx
注意:`$request_uri`保留了原始URI,不加的话会只重定向到首页,丢失具体页面权重。
Apache
修改.htaccess(开启mod_rewrite的前提下):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.com [NC]
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]
单个路径重定向:
Redirect 301 /old-page.html /new-page.html
在VirtualHost里配置更稳定,避免.htaccess被覆盖:
<VirtualHost *:80>
ServerName old-domain.com
Redirect permanent / https://new-domain.com/
</VirtualHost>
IIS (Windows Server)
打开IIS管理器,选择站点 -> HTTP重定向。
勾选”将请求重定向到此目标”,输入新URL,在”行为”里选择”301永久重定向”。
或者直接在web.config里写:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="301 Redirect" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^old-domain\.com$" />
</conditions>
<action type="Redirect" url="https://new-domain.com/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Cloudflare / CDN
在Cloudflare的Page Rules里设置:
– URL: `old-domain.com/*`
– Setting: Forwarding URL
– Status Code: 301
– Destination URL: `https://new-domain.com/$1`
这比在源站做快,因为请求在边缘节点就返回301,不经过后端服务器。如果源站用的是雨云这类高性价比服务器,可以省掉回源流量,同时利用雨云稳定的网络减少延迟。
WordPress
安装Redirection插件,在Tools -> Redirection里添加:
– Source URL: `/old-slug`
– Target URL: `/new-slug`
– Type: 301
或者直接在主题的functions.php里写:
add_action('template_redirect', function() {
if (is_archive('old_category') || is_page('old-page')) {
wp_redirect('https://new-domain.com/new-page', 301);
exit;
}
});
注意插件方法在更换主题或禁用插件后会失效,用代码更可靠。
命令行测试
配置完用curl验证:
curl -I https://old-domain.com/old-page
看响应头是否有:
HTTP/2 301
location: https://new-domain.com/new-page
301状态码必须是301,不是302(临时重定向)。302不会传递SEO权重,搜索引擎会继续索引旧URL。
常见坑
– 重定向链:A -> B -> C,浏览器和搜索引擎都要走两次跳转,增加延迟。直接A -> C。
– 循环重定向:A重定向到B,B又重定向回A。检查配置里目标URL是否正确,特别是带www和不带www的域名。
– 协议不一致:HTTP重定向到HTTPS,但HTTPS证书没配好,导致浏览器报错。先配好SSL再配重定向。
– 路径大小写:Linux服务器区分大小写,/Old-Page/和/old-page/是两个不同路径。用RewriteRule忽略大小写:
RewriteRule ^old-page /new-page [R=301,L,NC]
什么时候用301
– 域名更换
– HTTP升级到HTTPS
– 页面永久删除,用301指向最相关的替代页面
– 合并多个网站到主站
如果是临时维护,用302或307,避免搜索引擎错误缓存永久跳转。
雨云服务器上配置Nginx做301重定向时,建议先在本地curl测试,确认无误再更新DNS。因为DNS生效需要时间,如果先改DNS再配重定向,中间会有访问404的空窗期。正确的顺序:配好301 -> curl验证 -> 改DNS记录。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容