Apache旧域名迁移应优先用服务端全局RewriteRule实现全站301跳转:启用RewriteEngine,通过RewriteCond匹配新旧域名,RewriteRule保留路径参数并设R=301,L,推荐单独存为配置文件后Include,确保mod_rewrite启用且AllowOverride All,最后用curl验证响应头与跳转准确性。

旧域名整体迁移到新域名时,Apache 的 301 重定向应优先采用服务端全局配置方式,确保所有路径、子域名、HTTP/HTTPS 请求都被统一、精准、永久跳转,同时兼顾 SEO 权重传递和维护便利性。
用 RewriteRule 实现全站 301 跳转(推荐)
在 Apache 虚拟主机配置中(或独立的重定向文件里),启用重写引擎并匹配旧域名全部访问请求:
- RewriteEngine On 必须开启,否则规则不生效;
- RewriteCond %{HTTP_HOST} ^(www\.)?old-site\.com$ [NC] 同时覆盖 old-site.com 和 www.old-site.com,[NC] 表示不区分大小写;
- RewriteRule ^(.*)$ https://new-site.com$1 [R=301,L] $1 保留原始路径和查询参数,[R=301,L] 表示永久跳转且终止后续规则匹配;
- 若旧站存在 HTTP 访问,建议前置强制 HTTPS 跳转逻辑,例如:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://new-site.com$1 [R=301,L]
把规则单独存为文件再 Include(生产推荐)
将重定向逻辑从主配置中解耦,便于多站点复用和版本管理:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 新建文件如 /www/server/apache/conf/extra/redirect-old.conf(路径需在 Apache ServerRoot 下或已授权读取);
- 文件内容只含 Rewrite 相关指令,不包含 VirtualHost 或 Directory 块;
- 在目标站点的 VirtualHost 配置块内(DocumentRoot 后、 前)插入:
Include /www/server/apache/conf/extra/redirect-old.conf; - 路径必须是绝对路径,且不能超出 Apache 的安全上下文范围。
确保 mod_rewrite 正确启用
很多跳转失败其实卡在这一步:
- 检查 httpd.conf 或宝塔面板【软件管理 → Apache → 设置 → 配置修改】中,rewrite_module 是否已勾选启用;
- 确认对应目录的 AllowOverride All 已设置(尤其使用 .htaccess 时);
- 执行 apachectl -t 验证语法,返回 Syntax OK 才可重启或重载;
- 宝塔用户点击站点右侧【重载配置】即可,无需全服务重启。
验证与常见避坑点
配置生效后务必验证效果是否符合预期:
- 用 curl -I http://old-site.com/path?x=1 检查响应头是否含 HTTP/1.1 301 Moved Permanently 和正确 Location;
- 测试不同入口:www.old-site.com、old-site.com、https://old-site.com、带路径和参数的 URL;
- 避免写成 Redirect 301 / https://new-site.com/ —— 这种写法会丢失路径和查询字符串;
- 不要混用 Redirect 和 RewriteRule,二者机制不同,共存易引发冲突或重复跳转。

















