servername 配合 redirect 可实现旧域名到新域名的全站301跳转,需在virtualhost中正确设置servername和serveralias匹配旧域名,并用redirect 301 / https://new.example.com/保留原始路径,末尾斜杠不可省略,且须为http与https端口分别配置以确保全覆盖。

ServerName 配合 Redirect 可以实现旧域名到新域名的全站 301 跳转,关键在于让 Apache 明确识别旧域名请求,并统一重定向到新域名对应路径。
确保 ServerName 正确声明旧域名
在虚拟主机(VirtualHost)配置块中,ServerName 必须设为待迁移的旧域名(如 old.example.com),这是 Apache 匹配请求的依据。可选加 ServerAlias 覆盖子域名或常见拼写变体:
ServerName old.example.comServerAlias www.old.example.comServerAlias old-example.com
用 Redirect 指令做全路径保留跳转
在同一个 VirtualHost 块内,添加 Redirect 301 / https://new.example.com/。Apache 会自动将原始请求路径(如 /about.html)拼接到新域名后,实现精准跳转:
-
http://old.example.com/→https://new.example.com/ -
http://old.example.com/blog/post→https://new.example.com/blog/post
注意:末尾斜杠 / 不可省略,否则无法触发路径继承;状态码建议用 301(永久重定向),利于 SEO 权重传递。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
避免常见陷阱
以下配置错误会导致跳转失效或循环:
- 把
Redirect写在 VirtualHost 外(全局上下文),它只对匹配该 ServerName 的请求生效 - 新域名未配置独立的 VirtualHost 或 SSL 证书,导致跳转后无法访问
- 同时启用
mod_rewrite规则且逻辑冲突,优先级高于 Redirect,可能覆盖跳转行为 - HTTP 和 HTTPS 端口都监听但未分别配置跳转,例如仅配置了 443 端口的 VirtualHost,而用户访问的是 http://old.example.com(80 端口)
推荐完整配置示例
针对 HTTP→HTTPS 全站迁移,建议两个端口都覆盖:
<virtualhost>
ServerName old.example.com
ServerAlias www.old.example.com
Redirect 301 / https://new.example.com/
</virtualhost><virtualhost>
ServerName old.example.com
ServerAlias www.old.example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
Redirect 301 / https://new.example.com/
</virtualhost>
重启 Apache 后,所有旧域名请求都会带原始路径跳转至新域名,搜索引擎和用户访问体验均不受损。










