2011-06-14 1 views
2

Managed Fusion URL Rewriter를 사용하고 있습니다. 지금까지는 최고였습니다. 이제 쿼리 문자열이 프록시 웹 사이트의 URL에 전달되는지 확인하면됩니다.URL Rewriter Managed Fusion은 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] 

을하지만 모든 쿼리 문자열 paramters를 제거하지 않고 같은

http://proxyserver.com?othercode=something 

어떤 아이디어를 어떻게 특정 쿼리 문자열을 제거하는 방법 아래와 같이 추가 쿼리 문자열로 리디렉션 할 때 실패?

답변

0

Managed Fusion에서 소스 코드를 다운로드하고 프로젝트를 내 솔루션에 추가했습니다.

아래에서이 QueryString을 추가하는 코드를 찾아서 발견했습니다. querystring CODE를 제거하고 FIXED 코드를 첨부하는 새로운 방법을 추가하여 코드를 업데이트했습니다.

또한 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); 
    } 

ADDED NEW 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 값이 할당됩니다.

관련 문제