我正在尝试重写任何以数字序列和大写字母结尾的网址。不幸的是,我只取得了部分成功。这是我的.htaccess文件:
RewriteEngine On
RewriteRule [A-Z0-9]+$ index.php?r=wizard/index&key=$1 [L]
出于某种原因,这仅适用于以
结尾的网址key=QO106A654O65NN6828N
如果网址中缺少等号
keyQO106A654O65NN6828N
网址不匹配。我不明白为什么这个等号是重要的,因为它甚至不是正则表达式的一部分。可能导致这种行为的原因是什么?
根据要求,除非如上所述插入'='符号,否则一些示例网址不起作用:
/index.php?r=wizard/index&id&key4C2918IFIY3U4APKOI1
/index.php?r=wizard/index&id\xEF\xBF\xBD&keyQO106A654O65NN6828N
答案 0 :(得分:0)
您无法使用重写规则匹配QUERY_STRING。
你的规则如下:
RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)key([A-Z0-9]+)$
RewriteRule ^(index\.php)?$ $1?r=wizard/index&key=%1 [L,NE]