2012-05-20 47 views
0

我建立一個網站具有廣泛,品種繁多可選的$ _GET []參數:我的網址的範圍可以從 index.php?mod=regindex.php?mod=complicated&param1=fooindex.php?mod=EvenMoreComplicated&w=4&x=1&y=2&z=3什麼。mod_rewrite的高效可選參數處理

我明白,在某種程度上,這可以用一個[L]參數來處理一大堆重寫規則,但是,沒有一種更簡單的方法來處理這個,而不必手動指定每個可能的$ _GET []參數?

回答

0

在許多框架,這個問題是由一個獨特的重寫規則解決:

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

這意味着你得到所有的查詢字符串中的一個參數$_GET['url']

然後,parse_str()功能:

parse_str($_GET['url'], $queryArgs);

這會給你在$ queryArgs中的$ _GET等價物。

此外,這是演示代碼,不要忘記在真正的代碼中的消毒/過濾。

希望這會有所幫助!

+0

您能否詳細介紹一下?我嘗試過這一點,當我輸入,例如'http:// localhost/foo/bar'並使用'print_r($ queryArgs)''我只得到'Array([foo/bar] =>)1'沒有參數的實際值 –

+0

如果您嘗試在您的問題中說的話:'index.php?mod = complicated&param1 = foo或index.php?mod = EvenMoreComplicated&w = 4&x = 1&y = 2&z =' –

+0

'http:// localhost /index.php?x = foo&y = bar'返回'Array([index_php] =>)'在'print_r($ queryArgs)'中。 –