Apache Mod_Rewrite错误地改变了大小写

时间:2016-01-09 10:12:15

标签: php apache .htaccess mod-rewrite

我的root .htaccess文件中有以下规则

RewriteRule ^((?:Paired|Mobile)?Coupon|Raffle)/(\d+)/Image/?$       /product_image.php?type=$1&id=$2    [L,NC]

以及/product_image.php中的以下代码

var_dump([
        "REQUEST_URI"=>$_SERVER["REQUEST_URI"],
        "QUERY_STRING"=>$_SERVER["QUERY_STRING"]
]);

当我要求/ Coupon / 9 / Image /我得到

array(2) { 
    ["REQUEST_URI"]=> string(16) "/Coupon/9/Image/" 
    ["QUERY_STRING"]=> string(16) "type=Coupon&id=9" 
}

当我请求/ Raffle / 2 / Image /我得到

array(2) { 
    ["REQUEST_URI"]=> string(15) "/Raffle/2/Image/"  
    ["QUERY_STRING"]=> string(16) "type=raffle&id=2" 
}

抽奖请求query_string始终为小写,而优惠券请求中的大小写更改将在query_string中进行镜像。如何确保在query_string中保留请求案例?

我在调试之前的调试:

  • 删除[No Case]标志会导致抽奖请求出现404错误(与案例无关);优惠券请求仅按预期匹配“优惠券”。

1 个答案:

答案 0 :(得分:0)

结果"((?:Paired | Mobile)?优惠券| Raffle)/"匹配名为"抽奖"的文件夹。