Apache整站301迁移需在服务器级配置中启用mod_rewrite并设置RewriteEngine,通过RewriteCond和RewriteRule实现域名级跳转,或用RedirectMatch处理目录迁移,确保路径与参数完整传递、规则顺序合理且经curl验证响应头。
apache 整站 301 迁移,核心是让所有旧域名或旧路径的请求,永久跳转到新地址,同时保留原始路径和查询参数。配置必须写在服务器级文件(如 httpd.conf 或虚拟主机配置),而不是仅靠 .htaccess,才能确保全站生效、性能稳定、避免权限限制。
确认 mod_rewrite 已启用
编辑主配置文件(/etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf),检查并取消注释以下行:
LoadModule rewrite_module modules/mod_rewrite.so
若使用虚拟主机,还需在对应 <VirtualHost> 块内或站点 <Directory> 区块中确保:AllowOverride All(否则 .htaccess 不生效)或直接在配置中写规则(更推荐)。
域名级整站跳转(推荐用于换域名)
在目标旧站点的 <VirtualHost> 配置块中添加:
RewriteEngine OnRewriteCond %{HTTP_HOST} ^(www\.)?old-site\.com$ [NC]RewriteRule ^(.*)$ https://new-site.com$1 [R=301,L]
说明:[NC] 忽略大小写,同时匹配 old-site.com 和 www.old-site.com; 完整保留原始路径(如 /blog/post?id=123);[R=301,L] 表示返回 301 状态码,且立即终止后续规则匹配。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
目录结构迁移(如 /old/ → /new/)
不改域名、只调整内部路径时,用 RedirectMatch 更简洁安全:
RedirectMatch 301 ^/old/(.*)$ /new/$1
注意斜杠一致性:该规则匹配 /old/xxx,但不匹配 /old(无尾斜杠)。如需包含根目录,可加一条:
Redirect 301 /old /new/
若需重写查询参数或做复杂路径变形(如把 /old/blog/2023/01/title.html 转为 /articles/2023-01-title),则改用 RewriteRule + 正则捕获组,例如:
RewriteRule ^old/blog/(\d{4})/(\d{2})/(.+)\.html$ /articles/$1-$2-$3 [R=301,L]
验证与注意事项
重启服务后,用命令行验证真实响应头:
curl -I http://old-site.com/test-page
确认返回含 HTTP/1.1 301 Moved Permanently 及正确 Location: 头。
避免规则冲突:多个 RewriteCond/RewriteRule 应按从具体到宽泛顺序排列;
HTTPS 和 www 规范建议单独配置,不要混在迁移规则里,防止逻辑嵌套出错。

















