Apache RewriteRule 仅在模式前面带有等号时才匹配



我正在尝试重写任何以数字和大写字母序列结尾的网址。不幸的是,我只取得了部分成功。这是我的.htaccess文件:

RewriteEngine On
RewriteRule [A-Z0-9]+$ index.php?r=wizard/index&key=$1 [L]

出于某种原因,这仅适用于以

key=QO106A654O65NN6828N

如果 url 中缺少等号,如下所示

keyQO106A654O65NN6828N

网址不匹配。我不明白为什么这个等号很重要,因为它甚至不是正则表达式的一部分。可能导致此行为的原因是什么?

根据要求,一些示例网址不起作用,除非如上所述插入"="符号:

/index.php?r=wizard/index&id&key4C2918IFIY3U4APKOI1
/index.php?r=wizard/index&idxEFxBFxBD&keyQO106A654O65NN6828N

不能使用重写规则匹配QUERY_STRING。

让你的规则是这样的:

RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)key([A-Z0-9]+)$
RewriteRule ^(index.php)?$ $1?r=wizard/index&key=%1 [L,NE]

最新更新