我有一些項目,我重定向index.php
,與各種GET
參數的每個請求。Htaccess:多個參數和嵌套括號
目前,我使用這種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
結果的URL 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) ""
}
而不是得到a=1
,b=2
,c=3
...我只收到兩個最後的參數。注意RewriteRule
被執行,然後我知道我的正則表達式匹配。
有什麼想法?
你試圖解決什麼是真正的問題?使用正則表達式並不總是最好的解決方案。 – Arjan
我把它放在粗體中:使用一個RewriteRule而不是9來完成相同的工作。在這種情況下,我並不在乎表演,這更多的是好奇心的問題。 – zessx
所以基本上你想知道是否有可能編寫一個正則表達式來將url轉換成具有大量GET參數的東西。這應該是可能的,但這也意味着您將刪除原始url上指定的任何GET參數。這意味着它不適合任何項目。 – Arjan