2011-06-14 8 views
2

私はマネージドフュージョンURLリライタを使用していますが、これまでは最高でした。 これで、プロキシウェブサイトからURLにクエリ文字列が渡されるようにするだけです。私は手を前に、クエリ文字列を削除する必要があるしかしURLリライタマネージドフュージョンはQueryStringをストリップします

RewriteRule ^(.*) http://www.somewebsite.com/$1?CODE=777[P, QSA,I,L] 

: 私はので、私は以下のコードを持っているすべてのコールにCODE = 777を渡す必要があります。だから私は以下のコードを使用:

RewriteCond %{QUERY_STRING} ^CODE=([0-9]+)+$ 
RewriteRule ^(.*) http://www.somewebsite.com/$1? [P, QSA] 
RewriteRule ^(.*) http://www.somewebsite.com/$1?CODE=777[P, QSA,I,L] 

をしかし、私は、すべてのクエリ文字列を偶然に削除せずに、このような

http://proxyserver.com?othercode=something 

任意のアイデアをどのように特定のクエリ文字列を削除するには、以下のような追加のクエリ文字列にリダイレクトするときには、失敗しましたか?

答えて

0

Managed Fusionからソースコードをダウンロードし、私のソリューションにプロジェクトを追加しました。

私はこのコードを次のように検索し、QueryStringを追加しました。 querystring CODEを削除し、修正されたコードを貼り付ける新しいメソッドを追加してコードを更新しました。

また、CODEに割り当てられた固定値を制御するための設定を追加しました。この変更により

private Uri AppendQueryString(Uri substituedUrl, Uri existingUrl) 
    { 
     string append = existingUrl.Query.TrimStart('?'); 

     if (!String.IsNullOrEmpty(append)) 
     { 
      UriBuilder builder = new UriBuilder(substituedUrl); 

      if (String.IsNullOrEmpty(builder.Query) || builder.Query == "?") 
       builder.Query = append; 
      else 
       builder.Query = builder.Query.TrimStart('?') + "&" + append; 

      return AppendFixedQueryString(builder.Uri, existingUrl); 
     } 

     return AppendFixedQueryString(substituedUrl, existingUrl); 
    } 

追加された新しいMETHOD

private Uri AppendFixedQueryString(Uri substituedUrl, Uri existingUrl) 
    { 
     string append = string.Format("CODE={0}", Settings.Default.CODE); 


     if (!String.IsNullOrEmpty(append)) 
     { 
      UriBuilder builder = new UriBuilder(substituedUrl); 
      builder.Query = Regex.Replace(builder.Query, @"CODE=([0-9]+)", String.Empty); 
      if (String.IsNullOrEmpty(builder.Query) || builder.Query == "?") 
       builder.Query = append; 
      else 
       builder.Query = builder.Query.TrimStart('?').Trim("&".ToCharArray()) + "&" + append; 
      return builder.Uri; 
     } 
     return substituedUrl; 
    } 

。ユーザーが明示的にURLにCODE = 123を入力しても無視され、固定のCODE値が割り当てられます