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

如何通过htaccess实现多查询参数的URL Rewrite路径重写

Apache mod_rewrite 双参数路径重写调整方案

你只要在原有规则基础上,新增双参数对应的优先级更高的重定向和内部重写规则即可,完整的.htaccess配置如下:

RewriteEngine On

# 双参数旧路径外部重定向到新路径格式
RewriteCond %{THE_REQUEST} /site/(?:index\.php)?\?page=([^&]+)&\1=([^&\s]+)\sHTTP [NC]
RewriteRule ^ /site/%1/%2? [L,R=301]

# 原单参数旧路径外部重定向到新路径格式(保留原有逻辑)
RewriteCond %{THE_REQUEST} /site/(?:index\.php)?\?page=(.+)\sHTTP [NC]
RewriteRule ^ /site/%1? [L,R=301]

# 双参数新路径内部重写为原始查询参数格式
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?:site/)?([^/]+)/([^/]+)/?$ /site/?page=$1&$1=$2 [L,QSA]

# 原单参数新路径内部重写(保留原有逻辑)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?:site/)?(.+)/?$ /site/?page=$1 [L,QSA]

规则说明

  • 双参数重定向规则通过反向匹配\1对齐参数名,刚好适配你page=xxx&xxx=yyy的参数结构,不会误匹配其他格式的参数,末尾的?用于清除原始URL的查询参数,避免跳转后参数残留。
  • 双参数内部重写规则优先匹配两级路径的请求,比如/site/location/city会被内部转为/site/?page=location&location=city,和你的需求完全对应。
  • 原有单参数的所有逻辑完全保留,/site/about、/site/contact这类单路径的访问不受任何影响。

注意事项

测试前先清空浏览器缓存,避免之前的301永久重定向缓存干扰测试效果;调试阶段可以把R=301临时改为R=302,确认规则生效无误后再改回301。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:45:09