2

Managed Fusion URL Rewriter を使用していますが、これまでのところ素晴らしいものです。ここで必要なのは、プロキシ Web サイトからの URL でクエリ文字列が渡されることを確認することだけです。すべての呼び出しで CODE=777 を渡す必要があるため、以下のコードがあります。

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

ただし、事前にクエリ文字列を削除する必要があります。そこで、以下のコードを使用しました。

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

すべてのクエリ文字列パラメーターを削除せずに特定のクエリ文字列を削除する方法はありますか?

4

1 に答える 1

0

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

QueryString を追加する以下のコードを検索して見つけました。クエリ文字列 CODE を削除して FIXED を追加する新しいメソッドを追加して、コードを更新しました。

また、CODE に割り当てられた FIXED 値を制御するための設定も追加しました。

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

追加された新しい方法

    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 値が割り当てられます。

于 2011-06-17T09:51:13.187 に答える