我有一些项目,我index.php
用各种GET
参数重定向每个请求。
目前,我正在使用这种 htaccess (这只是一个摘录,我将参数名称更改为a, b, c...
,以简化问题):
RewriteRule ^([\w-]+)\.html$ index.php?a=$1 [L]
RewriteRule ^([\w-]+)/([\w-]+)\.html$ index.php?a=$1&b=$2 [L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)\.html$ index.php?a=$1&b=$2&c=$3 [L]
(...)
它工作(很好),但我正在考虑一种将这些行缩小为单个行的方法。
这个想法是有一些嵌套括号来“生成”所有GET
参数,但它似乎不像我想象的那么容易。
这是我到目前为止所做的:
RewriteRule
^(?:([\w-]+)\/)*([\w-]+)\.html$
index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8&i=$9 [L]
GET
网址的结果http://website.com/1/2/3/4/5/6/7/8/9.html
:
array(9) {
["a"]=> string(1) "8"
["b"]=> string(1) "9"
["c"]=> string(0) ""
["d"]=> string(0) ""
["e"]=> string(0) ""
["f"]=> string(0) ""
["g"]=> string(0) ""
["h"]=> string(0) ""
["i"]=> string(0) ""
}
而不是 get a=1
, b=2
, c=3
... 我只收到最后两个参数。请注意,RewriteRule
执行,然后我知道我的正则表达式匹配。
任何的想法 ?