2011-02-03 9 views
2

mod_rewriteを使用してクエリ文字列の最後にパラメータを追加したいと思います。私は[QSA]フラグを使ってこれを行うことができることを理解しています。mod_rewriteでクエリ文字列にパラメータを追加する

しかし、パラメータがまだクエリ文字列に存在しない場合は、このパラメータを追加することをお勧めします。クエリ文字列だったのであれば、:

http://www.mysite.com/script.php?colour=red&size=large 

は、私は上記のURLはweight=heavyは、この特定のパラメータがなかった場合にのみ、クエリ文字列の最後に追加され

http://www.mysite.com/script.php?colour=red&size=large&weight=heavy 

にリダイレクトされたいですそこに最初に!特定のパラメータがすでにURLにある場合、リダイレクトは必要ありません。

誰でも、これを行うことができる私の.htacessファイルを入れるコードを教えてください。

答えて

8

はEDIT:をテストし、それを変更し、今では私の作品

私はあなたがまったく重みが存在しない場合、デフォルトの重みパラメータを追加したいと仮定します。

RewriteEngine on 
RewriteBase/
RewriteCond %{QUERY_STRING} !weight= 
RewriteRule ^script.php  script.php?weight=heavy [R,L,QSA] 

これはesentially同じものを@coですReywardは答えましたが、もう少し具体的です。 (Rフラグ、変更を視覚化するため、重量パラメータは重くなくてもかまいません)

これは役に立ちます。

+0

こんにちは、コードの明確化のおかげで。私は.htaccessに追加しましたが、残念ながらそれを動作させることができませんでした!私はmod_rewriteを有効にしています..歓声。 – Matt

+0

少し修正してテストしました。今私のために働く。 – aorcsik

+0

これは今、完璧に動作します、あなたの助けをありがとう! – Matt

5

これは本当に奇妙なことです。それはあなたのシステムのデフォルトを設定しているかのようです。これはかなり標準的なことです。問題は、文字通りApacheを設定しているVHost定義または.htaccessファイルにそのデフォルトを設定することは維持できないし、扱いにくいことです。

私は、このようにそれをやっに対して助言するが、これは、あなたが探しているものを行うための迅速かつ汚い方法です:

RewriteCond %{QUERY_STRING} !weight=heavy 
RewriteRule /script.php /script.php?weight=heavy [QSA] 
+0

こんにちは、答えに感謝します。あなたは正しいです、私は現時点で迅速かつ汚れた解決策を探しています。私はあなたのコードを残念ながら働かせることができませんでしたが、私はあなたがどこに行くのかを見ることができます... – Matt