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

Apache环境下带查询字符串的.htaccess URL重定向问题

解决Java迁移WordPress后带参数JSP URL的301重定向问题

正确的重定向规则

将以下规则放在.htaccess文件的最顶部(WordPress默认规则块# BEGIN WordPress之前):

# 重定向特定旧JSP URL到新WordPress页面
RewriteCond %{QUERY_STRING} ^page=werkkleding\.jsp$
RewriteRule ^page_reader\.jsp$ /bedrijfskleding/ [R=301,L,QSD]

为什么之前的尝试失败?

逐个分析你试过的规则问题:

  • Redirect 301 /page_reader.jsp?page=werkkleding.jsp ...:Redirect属于mod_alias模块,仅匹配URL的路径部分(即/page_reader.jsp),不会识别查询字符串,因此带?page=werkkleding.jsp的请求永远不会触发这条规则。
  • RewriteCond %{THE_REQUEST} ...:理论上可行,但如果规则放在WordPress默认规则之后,WordPress的重写规则会先接管请求,直接返回404,导致这条规则无法执行。
  • 导致500错误的规则:最后一条规则存在语法错误(多余的$和反引号),Apache解析规则时出错,返回内部服务器错误。
  • RewriteRule ^page_reader.*$ ...:这条规则能匹配所有以page_reader开头的路径,但如果放在WordPress规则之后,会被提前拦截返回404;另外QSD参数需要Apache 2.4+支持,若服务器版本过低,QSD不会生效。

关键注意事项

  1. 规则位置优先:必须将自定义重定向规则放在WordPress默认规则之前,否则WordPress的index.php转发规则会先处理请求,直接返回404。
  2. 清除缓存测试:301永久重定向会被浏览器和CDN缓存,测试前务必清除浏览器缓存,或使用隐私模式访问。
  3. 批量重定向(可选):如果有多个类似旧URL(如page=xxx.jsp对应新路径/xxx/),可使用批量规则(需旧参数值和新slug一致):
    RewriteCond %{QUERY_STRING} ^page=([a-z0-9_]+)\.jsp$ [NC]
    RewriteRule ^page_reader\.jsp$ /%1/ [R=301,L,QSD]
    
    若参数值和新slug不一致(如你的例子中werkkleding对应bedrijfskleding),则需要单独为每个URL写一条规则。

内容的提问来源于stack exchange,提问作者Jason Dana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:42:17