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

Apache配置dbm型RewriteMap后带参数URL重写失败的解决咨询

Apache带查询参数的RewriteMap重写配置方案

问题根源

RewriteRule默认仅匹配URL的路径部分,不会包含?后面的查询字符串,因此带___store参数的请求无法匹配你当前RewriteMap中仅存储的路径key,导致重写失效。

配置调整步骤

1. 调整RewriteMap键规则

你需要将路径+对应的___store查询参数作为完整key存入rewrite.dbm,key和目标值的映射关系和你给出的期望规则完全对应即可,示例如下:

键(key)目标值(value)
kronen-und-gehaeusetuben/wasserdicht-typ-pbbz.htmlProdukte/Werke-Uhrenersatzteile/Schraubkronen-PBBZ-wasserdicht/
kronen-und-gehaeusetuben/wasserdicht-typ-pbbz.html?___store=defaultProdukte/Werke-Uhrenersatzteile/Schraubkronen-PBBZ-wasserdicht/
kronen-und-gehaeusetuben/wasserdicht-typ-pbbz.html?___store=enen/Products/Watch-replacement-parts/Watch-crowns/Screw-on-crowns/Screw-on-crowns-PBBZ-waterproof/
kronen-und-gehaeusetuben/wasserdicht-typ-pbbz.html?___store=frfr/Produits/Couronnes/Couronnes-vissees/Couronnes-vissees-PBBZ-etanches/
kronen-und-gehaeusetuben/wasserdicht-typ-pbbz.html?___store=eses/Productos/Movimientos-Piezas/Piezas-de-repuesto-para-relojes/Coronas/Coronas-a-rosca/Coronas-a-rosca-PBBZ-hermeticas/

2. 修改虚拟主机重写规则

调整后的完整配置如下:

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    #ServerName www.example.com
    RewriteMap rewrite_DB "dbm:conf/rewrite.dbm"
    <Directory "/var/www/html">
        Options FollowSymLinks Includes ExecCGI
        AllowOverride All
        DirectoryIndex index.html
        RewriteEngine On
        LogLevel alert rewrite:trace4
        RewriteBase /

        # 优先处理带___store查询参数的请求
        RewriteCond %{QUERY_STRING} ^___store=([a-z]+)$
        RewriteRule "^(.*\.html)$" "${rewrite_DB:$1?___store=%1|${rewrite_DB:$1|/}}" [L,NC,R=301,QSD]

        # 处理不带查询参数的HTML请求
        RewriteRule "^(.*\.html)$" "${rewrite_DB:$1|/}" [L,NC,R=301]
    </Directory>
</VirtualHost>

配置说明

  • 通过RewriteCond %{QUERY_STRING} ^___store=([a-z]+)$捕获查询参数中的___store值,存入%1变量用于拼接查找key
  • 查找RewriteMap时优先尝试匹配「路径+参数」的组合key,若不存在则自动 fallback 到仅匹配路径的key,兼容你default参数和无参数返回同一目标的需求
  • 新增的QSD标志会在重定向后丢弃原始查询参数,匹配你给出的重定向结果无参数的要求
  • 规则顺序不可调换,需先处理带参数的场景再处理无参数场景,避免逻辑覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:57:05