【问题标题】:IIS rewrite rule to check for querystring and add it if its not thereIIS 重写规则以检查查询字符串,如果不存在则添加它
【发布时间】:2012-09-20 19:50:41
【问题描述】:

我正在尝试制定一个将 URL 参数附加到 URL 的 IIS URL 重写规则。 url 参数为hssc。因此,通过服务器处理的任何 url 都需要该参数。请记住,某些 url 已经有自己的参数,而其他 url 不会,以及根 url 等,有时它需要添加 ?hssc=1&hssc= - 所以,如果我有一个作为比如:

我还希望 URL 不应该被隐藏(就像在后台重写一样)。我需要 URL 出现在 URL 中,所以当用户复制 URL 或添加书签时,参数就在那里。

我已经设置了条件来匹配它\&hssc|\?hssc - 现在我只需要一种方法来编写 URL,这样它就会出现并保留原始 URL 中已经存在的部分。

【问题讨论】:

    标签: regex iis-7 url-rewriting isapi-rewrite url-rewrite-module


    【解决方案1】:

     

    只是作为通过代码维护QS的提示:

    public static string GetQS()
    {
      var sb = new System.Text.StringBuilder();
    
      System.Collections.Specialized.NameValueCollection Qs = HttpContext.Current.Request.QueryString;
    
      var lst = new List<string>(Qs.AllKeys);
    
      foreach (string s in lst)
      {
        if (s == "MyOwnQSKey")
          sb.Append(s + "=" + "MyValue" + "&");
        else
          sb.Append(s + "=" + Qs[s] + "&");
      }
    
      if (!lst.Contains("MyOwnQSKey"))
        sb.Append("MyOwnQSKey=MyValue&");
    
      if (sb.ToString().EndsWith("&"))
        sb.Remove(sb.Length - 1, 1);
    
      return "?" + sb;
    }
    

    我刚刚从我的一个与你的 Url-Rewrite 和 QS 类似的项目中复制了这个

    希望有帮助

     

    【讨论】:

    • 这和我问的有什么关系?
    • 对于复杂的情况,我建议以编程方式使用 urlrewrite 规则。这将为您提供很多灵活性。您可以创建一个至少包含两种方法的类:一种在页面中创建链接,另一种在 Application_BeginRequest 事件中重写 url。开发人员拥有个人库和框架总是好的。
    • 其实情况并不复杂。我只想添加一个静态url参数。
    【解决方案2】:

    想通了 - 规则将这样设置:

    <rewrite>
                <rules>
                    <rule name="sigh" patternSyntax="ECMAScript" stopProcessing="true">
                        <match url="(.*)" negate="false" />
                        <action type="Redirect" url="{PATH_INFO}?hssc=1" />
                        <conditions>
                            <add input="{QUERY_STRING}" pattern="^hssc=|\?hssc=|\&amp;hssc=" negate="true" />
                        </conditions>
                    </rule>
                </rules>
            </rewrite>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2019-11-24
      • 2014-06-09
      • 2016-08-13
      • 2016-11-01
      • 2015-09-10
      相关资源
      最近更新 更多