2009-05-19 8 views
0

私はmod_rewriteのでの総N00Bだと私は何をしようとしていることは簡単に聞こえる:私は希望の代わりにB = 2 & C = 3 domain.com/script.php?a=1 &を持つのmod_rewriteは任意の数のパラメータを任意の名前で変換できますか?

持っている:

domain.com/script|a:1;b:2;c:3

を問題は、私のスクリプトは、さまざまな組み合わせで多数のパラメータを取ることで、順序は重要ではありません表現の中でそれぞれをコーディングして特定の順序を期待することは実現不可能です。したがって、順序やパラメータの数に関係なく、すべてのパラメータをスクリプトに渡すだけのルールを設定できますか?したがって、誰かが入力すると

domain.com/script|a:1;b:2;j:7 domain.com/script|b:2と同じようにすべてのパラメータと値が渡されます; a:1; ?

ありがとうございます!

答えて

3

私は、要求されたURLパスを解析するためにPHPを使用します。

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$params = array(); 
foreach (explode(',', substr($_SERVER['REQUEST_URI_PATH'], 6)) as $param) { 
    if (preg_match('/^([^:]+):?(.*)$/', $param, $match)) { 
     $param[rawurldecode($match[1])] = rawurldecode($match[2]); 
    } 
} 
var_dump($params); 

とのmod_rewriteのルールをご/script.phpファイルにこのような要求を書き換える:

働いたこと
RewriteRule ^script\|.+ script.php [L] 
+0

OK!少しマッピングの問題を抱えていたが、私はそれを得た。ありがとう! – nerdabilly

関連する問題