apache配置301永久重定向的核心是启用mod_rewrite模块并用rewriteengine、rewritecond和rewriterule在virtualhost中设置规则,明确返回301状态码以传递seo权重;需验证响应头确为“http/1.1 301 moved permanently”。
apache 配置 301 永久重定向,核心是让搜索引擎和用户访问旧域名时,自动、明确地跳转到新域名,并把原域名的 seo 权重(约90–99%)平稳传递过去。关键不在“跳过去”,而在“告诉服务器和爬虫:这是永久迁移”。
确认 mod_rewrite 已启用
301 重定向依赖 Apache 的 mod_rewrite 模块。若未启用,所有 Rewrite 规则都会被忽略。
- Linux 系统下,运行 a2enmod rewrite 启用模块,再执行 systemctl restart apache2
- Windows + phpStudy 用户,需在 Apache 配置界面勾选 rewrite_module
- 可通过创建一个 PHP 文件写 phpinfo() 查看 Loaded Modules 中是否含 mod_rewrite
全站域名级 301 跳转(换域名最常用)
适用于 old-site.com → new-site.com 这类整体迁移。推荐写在 VirtualHost 配置中(比 .htaccess 更高效、更可靠)。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在
<virtualhost></virtualhost>或<virtualhost></virtualhost>块内,DocumentRoot下方添加:
RewriteCond %{HTTP_HOST} ^(www\.)?old-site\.com$ [NC]
RewriteRule ^(.*)$ https://new-site.com$1 [R=301,L]
- [NC] 表示不区分大小写,同时匹配 old-site.com 和 www.old-site.com
- $1 保留原始路径,如 old-site.com/blog/2024 → new-site.com/blog/2024
- [R=301,L] 明确返回 301 状态码,且终止后续规则匹配
仅限 HTTP 跳 HTTPS + 域名统一(URL 规范化)
如果只是启用 HTTPS 或强制 www/non-www 统一,也属于 301 场景,建议一并处理,避免权重分散。
- 强制 HTTPS(假设已部署 SSL):
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] - 强制 www 开头:
RewriteCond %{HTTP_HOST} ^old-site\.com$ [NC]
RewriteRule ^(.*)$ https://www.old-site.com$1 [R=301,L] - 注意:多条规则需按逻辑顺序排列,避免冲突;HTTPS 和 www 规则建议合并进同一 VirtualHost
验证是否生效
配置完成后必须验证,不能只看浏览器跳转——搜索引擎只认状态码。
- 用 curl 检查响应头:
curl -I http://old-site.com → 应看到 HTTP/1.1 301 Moved Permanently 和 Location: https://new-site.com/ - 用在线工具如 httpstatus.io 或 Screaming Frog 扫描旧域名首页,确认返回码为 301
- 检查 Chrome 开发者工具 Network 标签页,刷新旧链接,看 Response Headers 是否含正确 Location 和 301 状态










