当网站更换域名、调整目录结构或清理旧页面时,301重定向是连接旧地址与新地址的桥梁,它向用户和搜索引擎明确传递"内容已永久搬走"的信号,并将旧页面积累的权重顺滑过渡到新链接。与仅用于临时场景的302不同,301只适合确定不再恢复的地址。掌握正确配置方式,能最大程度保住流量和搜索排名。
并非所有地址变更都需要301,用错场景反而会搅乱站点的搜索表现。先对照下述典型需求确认你的场景。
关键判断点是旧地址是否还会重新启用。若只是临时的促销落地页或A/B分流测试,则必须使用302。此外,切忌为了集中权重,把毫无关联的页面强行用301串联,这会干扰搜索引擎对页面主题的理解,拖累整体收录与排名。
各个服务器软件的写法差异不小,动手前请务必备份原始配置文件,防止一句错误规则导致整站打不开。
Apache最常见的做法是在网站根目录的.htaccess文件里写入指令。全站迁移时,使用:
Redirect 301 / http://www.newdomain.com/
这条规则会无条件把访客全部送往新站点。若只需跳转特定页面,可写为:
Redirect 301 /old-product.html /new-product.html
当需要匹配某目录下所有链接时,启用RewriteEngine并用正则,例如 RewriteRule ^old-cat/(.*)$ /new-catalog/$1 [R=301,L]。注意.htaccess默认隐藏,且服务器必须开启AllowOverride All,否则规则不会生效。
Nginx通常在站点配置文件中操作,路径多为/etc/nginx/conf.d或sites-available目录。最简单的全站跳转可用return指令:
return 301 http://www.newdomain.com$request_uri;
此写法会保留请求路径,将 /old-page 自动转为 /new-domain/old-page。若只针对某路径设置跳转,可使用location块配合rewrite,例如 location /old-cat/ { rewrite ^/old-cat/(.*)$ /new-catalog/$1 permanent; }。修改后务必执行 nginx -t 检查语法,确认无误再重载配置。
Windows IIS环境依赖URL Rewrite扩展。打开站点根目录的web.config文件,在rules节点下加入规则:
规则示例:match url="^old-page$",action type="Redirect" url="/new-page" redirectType="Permanent"
设置完成后,务必在IIS管理器中确认该模块已安装且规则状态为启用。建议先在测试页面验证,确认返回的HTTP状态码为301,而非302或404。
若不便调整服务器配置,可在代码层实现301。PHP中先调用 header("HTTP/1.1 301 Moved Permanently"); 再执行 header("Location: http://www.newdomain.com/$uri");,最后加exit确保后续代码不执行。Node.js Express框架可写为 res.status(301).redirect('http://www.newdomain.com' + req.url)。此类方式适合小型站点,但每次跳转会产生额外请求开销,流量较大的站点不建议长期依赖。
规则设置不等于配置完成,仍需通过多项检查确认跳转真实有效,且权重能正常传递。
一个常见误区是配置后立即删除旧内容,这会加速权重的流失。建议让旧地址保持可访问状态至少1-3个月,给搜索引擎充足的重爬时间。
操作过程中,以下几类错误出现频率高,值得重点留意。
服务器层面配置完成并验证返回301状态码后即已生效,用户访问即刻跳转。但搜索引擎的重新爬取和权重转移则需要时间,通常数天到数周不等,具体取决于站点权重和抓取频率,这属于正常现象。
可以,且推荐这样做。旧地址在保持跳转的同时,建议在新页面底部或声明区域提醒用户"内容已迁移",这种方式对用户体验更友好。但不要让旧地址提供完全独立的可访问内容,否则搜索引擎容易混淆哪个才是主版本。
在Google和百度等主流搜索引擎中,旧链接通常会在几周内逐步从索引中移除。若超过2-3个月旧链接仍未消失,建议检查跳转是否被重定向链拖慢,或使用站长后台的URL移除工具主动提交处理。
301重定向是一项精细但门槛不高的技术工作。判断场景是否匹配、选择对应服务器的正确写法、配置后验证状态码并留足迁移观察期,这三步缺一不可。实操时请从备份配置文件开始,先用单个页面测试规则无误,再推广至全站,并在站长工具中持续观察收录变化,这样可以平稳度过站点迁移期,保住辛苦积累的搜索权重。