apache实现域名跳转需通过虚拟主机匹配与重定向规则配合:servername指定主域名,serveralias列出待跳转的别名域名,再用redirect指令或mod_rewrite模块执行301跳转,配置后须重启服务生效。

Apache 本身不直接“跳转”域名,而是通过 虚拟主机匹配 + 重定向规则 实现多域名跳转效果。ServerName 负责标识主域名,ServerAlias 承载额外域名,真正执行跳转需靠 mod_rewrite 或 Redirect 指令。关键不是把多个域名塞进 ServerName(语法错误),而是先让它们被同一虚拟主机捕获,再统一重定向。
ServerName 和 ServerAlias 正确写法
一个
- ServerName 写你打算保留的主域名(如 example.com)
- ServerAlias 列出其他待跳转的域名,用空格分隔(如 www.example.com test.example.com oldsite.net)
- 不要在 ServerName 中写多个值,否则 Apache 启动失败
用 Redirect 实现简单 301 跳转
如果目标是把所有别名域名强制跳到主域名,最简洁方式是使用 Redirect 指令(无需启用 mod_rewrite):
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在对应
块内添加:Redirect 301 / https://example.com/ - 注意:该行必须放在 DocumentRoot 之后、Directory 块之前
- 跳转会保留原始 URL 路径(如访问 www.example.com/about → https://example.com/about)
用 mod_rewrite 精确控制跳转逻辑
需要区分不同来源域名、或跳转到不同目标时,用 RewriteCond + RewriteRule 更灵活:
- 确保 mod_rewrite 已启用(检查 httpd.conf 中 LoadModule rewrite_module modules/mod_rewrite.so 是否取消注释)
- 在
内添加:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^oldsite\.net$ [NC]
RewriteRule ^(.*)$ https://example.com$1 [R=301,L]
其中 [NC] 表示忽略大小写,[R=301] 发送永久重定向,[L] 表示终止后续规则。
注意事项与常见坑
- 修改配置后必须重启 Apache(systemctl restart apache2 或 apachectl restart)才生效
- 确保 DNS 已将所有待跳转域名解析到该服务器 IP
- HTTPS 站点需在
块中单独配置跳转,不能复用 HTTP 块 - 本地测试时,可在 Windows 的 hosts 文件或 macOS/Linux 的 /etc/hosts 中临时映射域名









