2011-07-10 27 views
1

.htaccessファイルに関しては完全なnoobです。私がやろうとしているのは、GET変数が存在するかどうかを確認して、?si=10を書き換えて渡しますが、それが存在する場合のみ。Htaccess書き換えルール条件付き

RewriteRule ^user/([^/\.]+)/?$ profile/index.php?name=$1 

私が代わりに、サーバー上で、それはに行くwebsite.com/user/Username/website.com/profile/?name=Usernameを言っていますこのように。しかし、website.com/user/Account/?si=10を追加すると、サーバは実際にロードされたページにsi変数を渡していません。どのように私はこれをやろうと思った?私はひどくこれを言葉で表現ならば、交換はURIが クエリ文字列、 するRewriteRuleのデフォルトの動作が含まれている場合は申し訳ありません..

答えて

4

は...マニュアルから

QSA flag

RewriteRule ^user/([^/\.]+)/?$ profile/index.php?name=$1 [QSA] 

をお試しください既存の クエリ文字列を破棄し、新たに生成された に置き換えることです。 [QSA] フラグを使用すると、クエリ文字列は になります。

+0

すごくおかげさまで、このようなことは存在しませんでした... –

1

あなたはこのようにそれを行うことができます。

RewriteCond %{QUERY_STRING} ^si=([0-9]+)$ // replace regex as neccesary 
RewriteRule ^user/([^/\.]+)/?$ profile/index.php?name=$1&si=%1 

%をするRewriteCond(S)からの試合や試合中にもたらし、あなたがするRewriteRuleからの試合のために、通常どおりドル記号を使用パーセント記号。これにより、照会変数を完全に制御できますが、QSAはより簡単です。

関連する問題