Apache 的 301 重定向由服务端配置实现,而非 DNS 解析;需通过 RewriteEngine、RewriteCond 和 RewriteRule 匹配旧域名并全站跳转至新域名,推荐用 Include 指令将规则单独存放便于维护,且必须启用 mod_rewrite 并验证语法正确后重启服务。

域名解析变更时,Apache 的 301 重定向不是靠 DNS 解析本身完成的,而是靠 Apache 服务端配置来响应旧域名的请求并跳转到新域名。DNS 只负责把域名指向服务器 IP,真正实现“用户访问旧域名 → 自动跳到新域名”这一动作的,是 Apache 收到请求后的内部处理逻辑。
关键点在于:解析变了,但旧域名仍可能被用户或搜索引擎直接访问;必须让 Apache 主动返回 301 响应,才能传递权重、避免 404、引导流量。
明确重定向范围:全站还是单页?
先判断需求场景:
- 整个旧域名(如 old-site.com)全部跳转到新域名(如 https://new-site.com)→ 用
RewriteCond + RewriteRule匹配 Host - 只改了部分路径(如 /old/news/123.html → /articles/123)→ 用
Redirect 301或RewriteRule精确匹配路径 - HTTP 升级 HTTPS + 域名变更同时发生 → 规则中目标 URL 写 https:// 开头,并确保 SSL 证书已就绪
推荐写法:用 Rewrite 实现全站跳转
在虚拟主机配置(或 .htaccess)中添加:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-site\.com$ [NC]
RewriteRule ^(.*)$ https://new-site.com$1 [R=301,L]说明:
-
%{HTTP_HOST}检查来访域名,[NC]不区分大小写 -
^(www\.)?old-site\.com$同时覆盖 old-site.com 和 www.old-site.com -
$1保留原始路径,比如访问 old-site.com/blog/abc 会跳到 https://new-site.com/blog/abc -
[R=301,L]表示永久跳转,且不再执行后续规则
更规范的做法:用 Include 把规则单独管理
尤其适合多个旧域名、大量历史路径或团队协作维护:
- 新建文件(如
/etc/apache2/redirects/old-domain.conf),内容同上 Rewrite 规则 - 在站点的
<VirtualHost>块里插入:Include /etc/apache2/redirects/old-domain.conf - 重启 Apache:
sudo systemctl reload apache2(Ubuntu/Debian)或sudo apachectl graceful(CentOS) - 好处:不污染主配置、方便注释停用、支持 Git 版本控制、上线回滚快
验证是否生效
别只看浏览器跳转,重点确认三点:
- 用
curl -I http://old-site.com查看响应头,必须含HTTP/1.1 301 Moved Permanently和Location: https://new-site.com/ - 检查跳转后 URL 是否完整保留路径(如
/about→https://new-site.com/about) - 用无痕模式测试,避免浏览器缓存干扰;也可清空 DNS 缓存或改 hosts 临时验证
不复杂但容易忽略。

















