現在のステータス: まず、この質問は2日前に投稿した質問に非常に関連していることを指摘したいと思います。私は以来、私が別の問題に直面していた問題に取り組み、さまざまな問題に遭遇しました。私はこれがどんな種類の「ダブルポスト」を構成しないことを望みますか?2つのMod書き換えルールを組み合わせる
欲しい効果を作り出すために孤立して動作するように見える2つのmod書き換えルールを作成しました。これらを以下に示す:
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)?([A-Za-z0-9.-]+)_([A-Za-z0-9.-]*) $1?$2=$3&%1 [L]
上記のルールは次のようにURLを取る:
www.site.com/param1/thing/sortorder_5/getparam2_6/
これに変換:
www.site.com/param1/thing/?sortorder=5&getparam2_6/
以下のように、第2の規則である:
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)?((?:cmd)[^/]*)/((?!(?:cmd)[.+]*)(.+)) $1?$2=$3&%1 [L]
これは次のようなURLをとります:
http://www.site.com/cmd/param1/thing/cmd2/param2/
とこのに変換:
http://www.site.com?cmd=param1/thing&cmd2=param/
望ましい結果:
私は次のことを行うことができるかもしれませんように、これら二つの書き換えルールを統合したいと思います:
http://www.site.com/cmd/param1/cmd2/param2/sortorder_5
http://www.site.com?cmd=param1&cmd2=param2&sortorder=5
これを行う方法を教えてくれる人は、一番親切です。私は数日間modのリライトコードをたくさん試してみました。私のregex/modリライトの知識は本当に傷ついているわけではないので、私の謝罪です! modリライトコード全体が下に貼り付けられます。ありがとうございました。
RewriteEngine On
# This block works fine in isolation
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)?([A-Za-z0-9.-]+)_([A-Za-z0-9.-]*) $1?$2=$3&%1 [L]
# This block also works fine in isolation
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)?((?:cmd)[^/]*)/((?!(?:cmd)[.+]*)(.+)) $1?$2=$3&%1 [L]
# This block should append the query string to index.php (front controller)
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^.*$ index.php?%1 [L]
あなたは、私はちょうど 'のRewriteRule ^(。*)$のような何かをすることをお勧めindex.php''を制御している場合?query = $ 1 [L、QSA] 'を実行し、スクリプト内のクエリを解析します。そうすることで、要求の解析を簡単にすることを除けば、mod_rewriteのルール(他のサーバーでも簡単に使用できます)に依存しません。 – Qtax
Btw、なぜあなたは 'RewriteCond%{QUERY_STRING}(。*)'を使っていますか?書き換えルールで 'QSA'フラグを使うことをお勧めします。 – Qtax