0
RedirectMatch 301 /out/link http://www.link.com/?getparam1=something&getparam2=somethingelse&getparam3=more

mysite.com/out/link をクリックすると、次のように移動します。

http://www.link.com/?getparam1=something/out/linkgetparam2=somethingelse/out/linkgetparam3=more

基本的には、http 'get' パラメーターの & 記号を /out/link 部分に置き換えます

4

2 に答える 2

1

すべてのアンパサンドを絶対にエスケープしたくない場合に備えて: ディレクティブの代わりに a&を記述した場合、クエリ内のアンパサンドは一致全体 ($0) に置き換えられません。RewriteRuleRedirectMatch

したがって、次の 2 行はユーザーには同じように見えます (2 行目にエスケープされていない があることに注意してください&) 。

RedirectMatch ^/product-id/(.*) http://www.example.com/?foo=bar\&product_id=$1 
RewriteRule   ^/product-id/(.*) http://www.example.com/?foo=bar&product_id=$1 [R=301]

右側の URI をユーザーに表示する場合は、示されているように [R] フラグを使用します。フラグを省略した場合、ユーザーには左側の URI が表示されます (通常はより複雑な URI であるため、フラグは必要ない可能性があります)。

同じように動作しますが、パフォーマンスの詳細については、パフォーマンスが低下する可能性があります (Google RedirectMatch と RewriteRule の比較)。これらの正規表現ルールはすべて、Web サーバー上のすべてのリクエストに対して評価されることに注意してください。

于 2013-11-27T19:49:11.570 に答える
1

おそらくBフラグで試してください

変換を適用する前に英数字以外の文字をエスケープします。

したがって、RedirectMatch 301 /out/link http://www.link.com/?getparam1=something&getparam2=somethingelse&getparam3=more [B]があります。

于 2012-06-05T21:20:28.940 に答える