You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需编写.htaccess重写规则以实现向WordPress的平滑迁移

解决旧URL到WordPress新链接的重定向方案

没问题,这是你需要的完整.htaccess配置,我已经把旧URL的重定向规则整合到WordPress默认重写规则的最前面(重写规则是按顺序匹配执行的,必须优先处理旧链接的跳转请求):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# 处理旧URL重定向:http://www.example.com/index.php?action=show&id=4577 → http://www.example.com/archives/4577
RewriteCond %{QUERY_STRING} ^action=show&id=(\d+)$
RewriteRule ^index\.php$ /archives/%1? [R=301,L]

# WordPress原有重写规则,保持不变
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

关键部分解释:

  • RewriteCond %{QUERY_STRING} ^action=show&id=(\d+)$:精准匹配查询字符串为action=show&id=数字的请求,(\d+)是捕获组,用来提取ID数值。
  • RewriteRule ^index\.php$ /archives/%1? [R=301,L]:
    • %1引用前面捕获组提取的ID数字,拼接成新的/archives/xxx路径;
    • 末尾的?用来清空原查询字符串,避免跳转后URL带多余的?action=show&id=xxx;
    • R=301代表永久重定向,对搜索引擎SEO友好;
    • L表示这是当前匹配的最后一条规则,匹配成功后不再执行后续规则。
  • 原有WordPress规则完全保留,确保WP自身的链接重写功能不受任何影响。

注意事项:

  • 确认服务器已启用mod_rewrite模块;
  • 如果WordPress安装在子目录,需要调整RewriteBase的值(比如子目录是blog,就改成RewriteBase /blog/);
  • 测试阶段可以先用R=302临时重定向,确认跳转正常后再改成301永久重定向。

内容的提问来源于stack exchange,提问作者Giuseppe Donato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:43:20