我正在尝试重写任何以数字和大写字母序列结尾的网址。不幸的是,我只取得了部分成功。这是我的.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]