
跳转(Redirect)会指示您的Web服务器自动将访问者从一个URL转发到另一个URL。每当您移动页面、重命名URL、启用新域名或下线旧内容时,跳转都是必不可少的。DirectAdmin 提供内置的跳转工具,让您无需手动编辑配置文件即可完成设置。本指南将为您详细介绍具体操作步骤。
什么是网站跳转?为什么要使用它?
网站跳转是一条指令,意思是:"当有人访问URL A时,将其转发到URL B"。常见的使用场景包括:
- 网站改版后将页面迁移到新URL
- 品牌重塑后将旧域名跳转到新域名
- 将
http://访问者跳转到https://(通常由SSL配置处理) - 通过将重复内容跳转到单一规范URL来整合重复页面
- 将已下线的产品页面跳转到对应的分类页面
301 还是 302 — 应该选择哪种跳转类型?
301 — 永久跳转
301 跳转告知浏览器和搜索引擎此次迁移是永久性的,旧URL将不再使用。搜索引擎会将原页面几乎所有的SEO权重(链接权益)传递给新URL。当页面确实永久迁移时,请使用301跳转——这是绝大多数跳转场景的正确选择。
302 — 临时跳转
302 跳转告知浏览器和搜索引擎此次迁移只是临时性的,原URL最终会恢复。搜索引擎会保留原URL的索引,不会传递SEO权重。302 仅适用于短期情况,例如网站更新期间将访问者引导到维护页面,或进行限时A/B测试。
SEO 提示:对于任何已永久迁移的URL,请使用 301(永久跳转)。这能确保搜索引擎更新索引,并保留原页面的排名权重。如果误将永久迁移设置为302跳转,长期来看您将损失SEO价值。
如何在 DirectAdmin 中创建跳转
- 登录您的 DirectAdmin 控制面板。
- 导航至 高级功能 → 网站跳转(具体标签可能因 DirectAdmin 版本略有不同)。
- 点击 添加新跳转。
- 在 源URL 字段中,输入您要跳转的路径,即您域名上的路径(例如
/old-page,或直接输入/表示整个域名)。 - 在 目标URL 字段中,输入包含
https://的完整目标URL(例如https://www.example.com/new-page)。 - 选择跳转类型:301永久跳转 或 302临时跳转。
- 点击 保存 或 添加 以激活跳转。
跳转整个域名
若要将一个域名的所有流量跳转到另一个域名(例如更换域名后),将源URL设置为 /(根目录),目标URL设置为带有 https:// 的新域名。请使用 301永久跳转。这样,所有访问旧域名的访问者都会被引导到新域名的首页。
跳转特定路径
若只需跳转某一特定页面或子目录,请在源URL字段中输入精确的路径。例如:
- 源URL:
/services/old-name→ 目标URL:https://www.example.com/services/new-name - 源URL:
/blog/2020/old-post→ 目标URL:https://www.example.com/blog/updated-post
路径跳转只影响匹配的URL,网站其他部分将正常运行。
如何验证跳转是否正常工作
保存跳转设置后,可通过以下方法进行测试:
- 浏览器测试:在无痕/隐私窗口中访问源URL,浏览器应自动加载目标URL。
- 在线跳转检查工具:使用
redirect-checker.org或httpstatus.io等免费工具,确认HTTP状态码为预期的301或302。 - 开发者工具:打开浏览器的"网络"标签页(F12),访问源URL,在请求日志中查找301或302响应。
注意:如果您之前访问过该URL,浏览器缓存可能会让跳转看起来不起作用。请务必在无痕/隐私窗口中测试,或在得出结论前清除浏览器缓存。
307 和 308 跳转 — 何时需要用到?
除301和302之外,开发人员在处理API和表单提交时还需了解另外两种跳转状态码。
307 临时跳转
与302类似,307 表示临时迁移。关键区别在于:307 严格禁止浏览器更改HTTP请求方法。如果客户端向返回307的URL发送POST请求,客户端必须向新位置再次发送POST请求,而不能转换为GET。这对于需要保留原始请求方法的API端点和表单处理程序非常重要。
308 永久跳转
与301类似,308 表示永久迁移,并指示搜索引擎更新索引。同时,它也会保留HTTP请求方法,相当于REST API中非GET请求的301等价物。对于仅使用GET请求进行页面导航的普通网站,301和302仍然是正确的选择。307和308适用于需要在跳转中保持请求方法完整性的API开发场景。
使用 .htaccess 实现通配符域名跳转
更换域名时,您需要将旧域名上的每一个页面都跳转到新域名上对应的页面。为数百个页面分别设置跳转规则并不现实。正确的做法是使用通配符跳转,自动捕获完整的URL路径并附加到新域名上。
在旧域名根目录的 .htaccess 文件中添加以下内容:
RewriteEngine OnRewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC]RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]
$1 占位符会捕获域名根目录后的所有内容并附加到目标地址,因此 old-domain.com/services/web-hosting 会跳转到 new-domain.com/services/web-hosting,而不仅仅是首页。域名切换后,请至少保持旧域名有效并续费一到两年,以确保跳转持续生效,并将所有SEO权重完整传递。
诊断并修复跳转循环
跳转循环发生在URL A跳转到URL B,而URL B又跳转回URL A的情况下——或者经过更长的链路最终回到起始URL。浏览器会因此报错,例如"ERR_TOO_MANY_REDIRECTS"或"此页面无法正常工作——跳转次数过多"。在修复循环之前,访问者将完全无法访问该网站。
使用 curl 追踪跳转链
最快速的诊断工具是在终端或命令提示符中使用 curl -IL:
curl -IL https://example.com/page— 打印跳转链中每一跳的所有响应头- 每个
Location:头显示该跳指向的下一个地址 - 正常的跳转链最终以HTTP 200结束;循环则永远无法解析,最终超时
常见原因及解决方法
- 自引用规则:跳转的源URL和目标URL相同。逐行检查
.htaccess中的每条Redirect和RewriteRule,删除自引用的那条。 - 双重HTTPS跳转:服务器配置(如Nginx或Apache虚拟主机)已强制启用HTTPS,而
.htaccess又添加了第二条HTTPS跳转规则。请删除.htaccess中重复的规则。 - 两个域名互相跳转:域名A跳转到域名B,但域名B的
.htaccess中包含跳转回域名A的规则。请检查目标域名的.htaccess并删除冲突规则。 - CMS插件冲突:WordPress跳转插件或SEO插件可能添加了与
.htaccess冲突的跳转规则。暂时禁用插件以找出原因,然后修复冲突设置。
修复完成后,请务必清除浏览器缓存,并使用 curl -IL 或在线跳转检查工具重新测试,确认跳转链在HTTP 200处正常结束。
总结
- 所有永久迁移使用 301 — 可保留SEO排名。
- 仅在真正临时的情况下使用 302。
- 跳转可应用于整个域名(源URL:
/)或特定路径。 - 使用带
$1的通配符RewriteRule,在跳转整个域名的同时保留URL路径。 - 使用
curl -IL调试跳转循环,并修复.htaccess中的冲突规则。 - 设置完成后,请务必通过无痕浏览器窗口或在线跳转检查工具进行验证。