2012-02-21 11 views
0

私のURLは、http://www.example.com/eg1?redirect=xyzではhttp://www.example.com/eg1の.htaccess - あるべきURLからクエリ文字列を削除(無リダイレクト)

このために書かれた書き換えルールは次のとおりです。

RewriteCond %{Query_STRING} ^redirect=xyz$ 
RewriteRule ^(.*)$ /examples/$1? [L] 

リダイレクトが正常に動作していますクエリ文字列は追加されたままです。 [R]フラグを付けると、最後の疑問符(?)がうまく動作し、クエリ文字列が削除されますが、[L]フラグが機能しないというフラグが付きます。私の場合、リダイレクトはありません。コンテンツを保持する別のディレクトリに転送するだけです。

答えて

2

のルールが細かいです:

RewriteCond %{Query_STRING} ^redirect=xyz$ 
RewriteRule ^(.*)$ /examples/$1? [L] 

あなたはそれがアドレスバーに反映したい場合は、外部へのリダイレクトを指定する必要があります。すなわちRTemporary RedirectR=302)またはPermanent RedirectR=301)です。 Lと一緒に。デフォルトではRは一時的なリダイレクトを行います。

RewriteRule ^(.*)$ /examples/$1? [R,L] 

のコメント:

flsg RとともにLを追加します。

RewriteRule ^(.*)$ $1? [R,L] 
+0

私は中間のURLがアドレスバーに来ないようにします。 [C]または[L]フラグを使用しましたか?私がしたことは、このようなURLに一時的にリダイレクトしようとしたことです。 'RewriteCond%{Query_STRING}^redirect = xyz $
RewriteRule ^(。*)$ $ 1? [R]
RewriteRule ^(。*)$/examples/$ 1? [L] 'これは動作しますが、問題は最後のルールが常に実行されていることです。この2つのルールを同時に実行することを考えていました。[C]または[N]フラグが役立つ可能性があります。しかし、彼らは期待どおりに働いていません。 – Karol

+0

@Karolアップデートの更新 – ThinkingMonkey

+1

これは私をあまりにも助けました! – Hexodus