如何使用.htaccess批量替换全站URL的旧域名与新永久链接(含5000条URL迁移需求)
如何使用.htaccess批量替换全站URL的旧域名与新永久链接(含5000条URL迁移需求)
嗨,兄弟,5000条URL手动改绝对是噩梦级任务!别慌,用Apache的.htaccess写个正则重写规则就能一次性搞定所有这类URL的跳转,效率直接拉满,不用一条一条碰。
先对应你给出的URL模式:
Current URL: oldomain.com/2020/12/data-raid-4963.html
Replace To: sub.newdomain.com/4963-2/
Current URL: olddomain.com/2019/09/data-raid-2125.html
Replace To: sub.newdomain.com/2125-2/
核心需求就是提取旧URL里data-raid-后面的数字,拼上新域名的格式,我们直接用mod_rewrite来实现:
具体实现步骤
- 找到旧域名根目录下的
.htaccess文件(如果没有就新建一个) - 把下面的规则复制进去:
# 开启重写引擎 RewriteEngine On # 匹配旧URL格式并跳转至新URL RewriteRule ^([0-9]{4})/([0-9]{2})/data-raid-([0-9]+)\.html$ https://sub.newdomain.com/$3-2/ [R=301,L]
规则细节解释
RewriteEngine On:必须开启这个才能让重写规则生效,Apache默认一般是开启的,要是不行就联系主机商确认mod_rewrite模块是否启用- 正则部分
^([0-9]{4})/([0-9]{2})/data-raid-([0-9]+)\.html$:^([0-9]{4}):匹配开头的4位年份(比如2020、2019),用括号捕获为变量$1([0-9]{2}):匹配中间的2位月份(比如12、09),捕获为$2(这里我们不需要用这个值,所以规则里没用到)data-raid-([0-9]+):匹配data-raid-后面的数字(比如4963、2125),捕获为$3——这是我们要用到的核心值\.html$:匹配URL结尾的.html,确保只匹配目标格式的URL
- 替换目标
https://sub.newdomain.com/$3-2/:用捕获到的数字$3加上-2/,拼上新域名的地址 - 标记
[R=301,L]:R=301:表示永久重定向,对SEO友好,搜索引擎会更新索引到新URLL:表示这是最后一条规则,一旦匹配成功就停止处理后续规则
注意事项
- 测试阶段建议先用
R=302临时重定向,确认所有URL都能正确跳转到目标地址后,再改成R=301,避免出错后没法快速撤回 - 如果旧域名和新域名不在同一台服务器上,要确保旧域名的服务器还能正常访问,并且
.htaccess文件能被正确读取 - 要是还有其他格式的URL需要迁移,只需要调整正则部分即可,这个规则完全覆盖你给出的示例模式,5000条应该都能搞定
备注:内容来源于stack exchange,提问作者Maone van Cobain
相关产品推荐
相关产品推荐

