URL Rewriter Managed Fusion剥离QueryString

问题描述

| 我正在使用Managed Fusion URL Rewriter,到目前为止,它很棒。 现在,我只需要确保从代理网站的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,L]
但是当我使用下面的其他查询字符串重定向时,它失败了
http://proxyserver.com?othercode=something
任何想法如何剥离特定的查询字符串而不删除所有查询字符串参数?     

解决方法

        我从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值     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...