1

クエリ文字列を見ずにリダイレクトしたいのですが、リダイレクト結果にはクエリ文字列も追加する必要がないため?、RewriteRule の最後に a を追加します。

次の構文を試しましたが、それに近い結果になりました。

RewriteCond %{QUERY_STRING} .* [NC]
RewriteRule ^exd\.asp$ http://www.example.com/index.php?r=p/consumer? [R=301,L]

また、必要な最初の をエスケープしようとしました?が、それでも同じ結果です。

RewriteRule ^exd\.asp$ http://www.example.com/index.php\?r=p/consumer? [R=301,L]

結果:

http://www.example.com/index.php?r=p/consumer%3f

に乗りたい%3f

ありがとう!

4

1 に答える 1

3

?ターゲットにすでにクエリ文字列がある場合は、最後にを追加する必要はありません。これを行うだけです:

RewriteCond %{QUERY_STRING} .* [NC]
RewriteRule ^exd\.asp$ http://www.example.com/index.php?r=p/consumer [R=301,L]

デフォルトでは、クエリ文字列は次のように追加されます。

RewriteRule ^foo$ /bar [L]

あなたが要求/foo?blahし、あなたは得る/bar?blah

ただし、?ターゲットにが含まれている場合、クエリ文字列は、が含まれていない限り追加されません。したがって、次のQSAようになります。

RewriteRule ^foo1$ /bar? [L]
RewriteRule ^foo2$ /bar?q=2 [L]

あなたが要求/foo1?blahし、あなたが得る/bar、あなたが要求/foo2?blahし、あなたが得る/bar?q=2QSA書き換えフラグにaを含める&blahと、最後に追加されます。

于 2012-09-26T02:01:20.427 に答える