更换顶级域名时,apache 的 301 重定向需启用 mod_rewrite 模块并正确配置 rewriterule,支持 .htaccess 或虚拟主机两种方式,确保旧域名所有请求(含路径、参数)永久跳转至新域名对应位置,以传递 seo 权重并保障用户无感访问。

更换顶级域名时,Apache 的 301 重定向核心是让旧域名所有请求(含路径、参数)永久跳转到新域名对应位置,确保 SEO 权重传递和用户无感访问。关键在于启用 mod_rewrite 模块并写对 RewriteRule 规则。
确认并启用 mod_rewrite 模块
这是前提,否则所有重写规则都不生效:
- 登录服务器,打开 Apache 主配置文件(通常是 /etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf)
- 查找这一行:
#LoadModule rewrite_module modules/mod_rewrite.so,去掉开头的#取消注释 - 再找到站点目录的
<directory></directory>区块(如<directory></directory>),把里面的AllowOverride None改为AllowOverride All - 保存后执行
sudo systemctl restart apache2(Debian/Ubuntu)或sudo systemctl restart httpd(CentOS/RHEL)
在网站根目录放 .htaccess 文件(推荐方式)
无需修改主配置,适合共享主机或宝塔等面板环境:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在网站根目录(如 /var/www/html)新建一个名为 .htaccess 的文件(注意开头的点)
- 写入以下内容(将 old-domain.com 和 new-domain.com 替换为你的真实域名):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]
说明:第一行开启重写;两行 RewriteCond 覆盖不带 www 和带 www 的旧域名;$1 确保原始路径(如 /about.html)被完整保留到新地址。
直接改虚拟主机配置(更高效,适合独立服务器)
如果能编辑站点的 <virtualhost></virtualhost> 配置(如 /etc/apache2/sites-available/your-site.conf),把规则写在里面更稳定:
- 在
<virtualhost></virtualhost>或<virtualhost></virtualhost>块内,DocumentRoot上方插入:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]
- 保存后执行
sudo a2ensite your-site.conf(如未启用)和sudo systemctl reload apache2
验证是否生效
别跳过这步,避免白忙活:
- 用浏览器访问
http://old-domain.com/some-page,看是否跳转到https://new-domain.com/some-page - 用命令行检查响应头:
curl -I http://old-domain.com,返回中应包含HTTP/1.1 301 Moved Permanently和Location: https://new-domain.com/ - 也可用在线工具如 web-sniffer.net 输入旧 URL 查看状态码










