2016-10-09 12 views
0

私は、1変数を変数に渡し、残りはURLの残りの部分をそのまま渡す必要があるので、後でPHPで$ _GETで取得できます。以下は動作しません:mod_rewriteパス変数と

RewriteRule  ^store/([a-zA-Z0-9\_\-]+).html?(.*)/?$ store.php?var1=$1&$2 [L] 

可能なリンクは次のようになります。

store/products.html 
store/products.html?sort=asc&price=down 
store/products.html?price=down&here_we_can_have_a_lot_of_different_params_in_whatever_order 

基本的には、単にURLを楽しみにこの$のVAR1と休息を取りますか?どうやってやるの?

P.S.私は解決策を見つけたと思う:

RewriteRule ^store/([a-zA-Z0-9\_\-]+).html?(.*)/?$ store.php?var1=$1&%{QUERY_STRING} [L] 
+0

あなたはPHPで直接行うことはできません何らかの理由は?多分最初に書き換え条件を追加すると助けになるでしょうか? –

+0

> PHPで直接行うことができない何らかの理由はありますか?あなたはそれが何を意味するかはわかりません。私は上記の方法で渡されるURLを必要とする、私はちょうどmod_rewriteであまりにも良い、残念なことに、そしてグーグルの答えは役に立たなかった。 – Paul

答えて

0

問題がRewriteRule作品方法として、あなたの前提です。 A RewriteRuleはURIパス(Apache URIではRequest URI)と一致し、クエリ文字列とは一致しません。このことは、それだけで「$」(または文字列の末尾)に削減し、?ことができるので、それだけでregexpは.htmなど.html

一致することを意味する前に、正規表現の末尾に(.*)/?$のみ機能意味します次のようにあなたのルールの簡素バージョンは次のとおりです。

RewriteRule ^store/([a-zA-Z0-9\_\-]+).html store.php?var1=$1 [L,QSA] 

QSAは、単純に書き換えられたURLに任意の既存のクエリ文字列をバック追加され、Query String Appendの略です。