301跳转是一种永久性重定向技术,当网站需要更改域名、调整URL结构或合并页面时,通过301跳转可以将旧URL的权重和流量完全传递给新URL,同时告知搜索引擎该页面已永久移动,有助于保持网站在搜索引擎中的排名和权重,搭建301跳转的方法因服务器环境不同而有所差异,以下是常见服务器环境下301跳转的详细搭建步骤和注意事项。

Apache服务器下搭建301跳转
Apache服务器是目前使用较广泛的Web服务器之一,其301跳转主要通过修改.htaccess文件实现。.htaccess文件是Apache服务器的配置文件,通常位于网站根目录下,如果该文件不存在,可以新建一个。
整站301跳转(域名更换)
当需要将整个网站从旧域名(如old-domain.com)永久跳转到新域名(如new-domain.com)时,在.htaccess文件中添加以下代码:
RewriteEngine On RewriteRule ^(.*)$ https://new-domain.com/$1 [L,R=301]
代码说明:RewriteEngine On
开启重写引擎,RewriteRule ^(.*)$
匹配所有URL路径,https://new-domain.com/$1
将匹配到的路径重定向到新域名,L
表示停止处理后续规则,R=301
明确指定301重定向。
单页面301跳转
若仅需将某个旧页面(如old-domain.com/old-page.html)跳转到新页面(如new-domain.com/new-page.html),在.htaccess文件中添加:

Redirect 301 /old-page.html https://new-domain.com/new-page.html
或者使用RewriteRule实现:
RewriteEngine On RewriteRule ^old-page.html$ https://new-domain.com/new-page.html [L,R=301]
带www域名与不带www域名的301跳转
为统一域名规范,可将带www的域名跳转到不带www的域名(或反之),
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.old-domain\.com [NC] RewriteRule ^(.*)$ https://old-domain.com/$1 [L,R=301]
代码说明:RewriteCond
用于匹配条件,此处匹配主机名为www.old-domain.com([NC]
表示不区分大小写),若满足条件则执行后续重定向规则。
注意事项:

- 修改.htaccess文件前需备份原文件,避免配置错误导致网站无法访问;
- 确保Apache服务器的mod_rewrite模块已启用(通过
phpinfo()
函数查看或联系主机商); - 跳转目标URL需使用完整域名(包含http://或https://),避免循环跳转。
Nginx服务器下搭建301跳转
Nginx以其高性能和低资源占用成为主流服务器之一,301跳转主要通过修改nginx.conf配置文件实现,通常位于/etc/nginx/nginx.conf
或站点配置目录(如/etc/nginx/sites-available/
)中。
整站301跳转(域名更换)
在server块中添加以下配置:
server { listen 80; server_name old-domain.com www.old-domain.com; return 301 https://new-domain.com$request_uri; } server { listen 443 ssl; server_name new-domain.com www.new-domain.com; # 其他SSL配置... }
代码说明:第一个server块监听80端口(HTTP),将所有访问旧域名的请求通过return 301
重定向到新域名的HTTPS地址;第二个server块为新域名的HTTPS配置。
单页面301跳转
使用rewrite指令实现:
server { listen 80; server_name old-domain.com; location /old-page.html { rewrite ^/old-page.html$ https://new-domain.com/new-page.html permanent; } }
代码说明:location
指令匹配特定路径,rewrite
进行重写,permanent
表示301重定向。
带www与不带www域名的统一
例如将带www的域名跳转到不带www:
server { listen 80; server_name www.old-domain.com; return 301 http://old-domain.com$request_uri; } server { listen 80; server_name old-domain.com; # 其他配置... }
注意事项:
- 修改nginx.conf后需执行
nginx -t
检查配置语法,正确后通过systemctl reload nginx
重载配置; - 若配置SSL证书,需确保重定向后的域名已正确部署证书;
- Nginx的
$request_uri
变量包含请求路径及参数,可完整保留原URL信息。
其他环境下的301跳转
Windows服务器(IIS)
- 通过IIS管理器,选择需要重定向的网站或目录;
- 双击“URL重写”模块,点击“添加规则”;
- 选择“入站重写”,规则类型选择“匹配的URL”,模式输入需要匹配的路径(如
^old-page\.html$
); - 在“操作”部分选择“重定向”,重定向URL输入目标地址,勾选“永久重定向(301)”。
PHP脚本实现301跳转
若无法修改服务器配置,可通过PHP代码实现:
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: https://new-domain.com/new-page.html"); exit(); ?>
说明:需将此代码放在旧页面的开头,且在输出任何内容前执行。
WordPress环境
- 使用插件:如“Redirection”“All 404 Redirect to Homepage”,设置旧URL到新URL的映射;
- 手动修改:在主题的functions.php文件中添加:
function add_redirect() { if (is_page('old-page')) { wp_redirect('https://new-domain.com/new-page.html', 301); exit(); } } add_action('template_redirect', 'add_redirect');
301跳转的验证与注意事项
验证方法:
- 使用浏览器开发者工具(F12),在“网络”标签中查看响应状态码,应为301;
- 通过在线工具(如SmallSEOTools、Redirect Checker)输入旧URL,确认跳转是否正确及状态码;
- 在搜索引擎中搜索“site:旧域名”,检查是否显示“已永久重定向至新域名”。
注意事项:
- 避免循环跳转:确保目标URL不会再次跳转回原URL,否则会导致无限循环;
- 保持URL结构一致性:若为整站跳转,尽量保持目录结构不变,减少404错误;
- 权重传递时效:搜索引擎完全传递权重可能需要数周时间,期间需监控网站流量和排名变化;
- HTTPS跳转:若目标网站启用HTTPS,需确保SSL证书有效,否则浏览器会显示安全警告。
相关问答FAQs
问题1:301跳转和302跳转有什么区别?如何选择?
解答:301跳转表示“永久移动”,搜索引擎会将旧URL的权重完全转移给新URL,适用于域名更换、URL结构永久调整等场景;302跳转表示“临时移动”,搜索引擎会保留原URL的权重,仅适用于短期维护或A/B测试等临时场景,若需长期保持新URL的权重和排名,应选择301跳转。
问题2:301跳转设置后多久生效?为什么我的网站流量没有立即恢复?
解答:301跳转设置后,理论上立即生效,但搜索引擎(如百度、Google)完全传递权重和恢复排名需要一定时间,通常为几天到数周不等,流量未立即恢复的原因可能包括:搜索引擎爬虫发现并处理重定向需要时间、旧URL的索引未被完全更新、新URL需要重新被收录等,建议设置301后提交新URL的sitemap,并通过搜索引擎站长工具主动提交重定向关系,以加速索引更新。