apache中永久迁移旧域名最可靠方式是用rewritecond+rewriterule实现全路径301跳转,需启用mod_rewrite、设allowoverride all,并通过include引入含rewriteengine、主机匹配、完整uri保留及qsa参数的独立配置文件,上线前须验证语法、响应头及https直跳。

把旧网址永久迁移到新域名,Apache 里最可靠的做法是用 RewriteCond + RewriteRule 实现全路径映射,确保每个旧 URL(含子路径、参数)精准跳到对应的新地址,而不是只跳首页。
必须开启 mod_rewrite 模块
先确认 Apache 已加载重写模块:打开主配置文件(如 /etc/apache2/apache2.conf 或 /www/server/apache/conf/httpd.conf),找到这行并取消注释:LoadModule rewrite_module modules/mod_rewrite.so
再检查站点目录的 <directory></directory> 块中,AllowOverride 设为 All(尤其使用 .htaccess 时)。
推荐配置方式:用独立文件 + Include 管理规则
避免把规则硬塞进主配置,新建一个专用文件,例如:/www/server/apache/conf/extra/domain-migrate.conf
内容如下(替换为你的真实域名):
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://new-domain.com$1 [R=301,L,QSA]
-
[NC]表示不区分大小写,同时匹配old-domain.com和www.old-domain.com -
^.*$匹配全部路径,$1完整保留原始 URI(比如/blog/2023/post.html?ref=abc) -
[QSA]确保查询参数(?xxx)不丢失 -
[R=301,L]表示永久跳转,且该规则执行后不再处理后续重写
在虚拟主机中引入该文件
进入宝塔面板【网站】→【设置】→【配置文件】,在 <virtualhost></virtualhost> 块内、DocumentRoot 下方插入:Include /www/server/apache/conf/extra/domain-migrate.conf
注意路径必须是绝对路径,文件权限设为 644。
上线前务必验证三件事
- 运行
apachectl configtest,返回Syntax OK才安全 - 用
curl -I http://old-domain.com/some-page,确认响应头含:HTTP/1.1 301 Moved Permanently和Location: https://new-domain.com/some-page - 检查 HTTPS 是否强制:如果新站只走 HTTPS,旧站 HTTP 请求也应直跳
https://开头地址,避免中间多跳
个别页面需特殊映射(如旧活动页 → 新专题页),可在同一配置文件末尾追加:Redirect 301 "/old/campaign" "https://new-domain.com/promo"
这类简单跳转比正则更轻量、易读,适合一对一场景。










