URL重写改变查询字符串的情况下(URL Rewrite to change querystring

2019-09-30 06:41发布

我期待在建立我的web.config的URL重写规则,将修改以下网址:

/detail.aspx?aID=164&mode=t

要(见的情况下aid ):

/detail.aspx?aid=164&mode=t

请任何人都可以帮助我呢? 唯一的其他东西在这里提到的是,如果没有规则应该仍然工作mode在年底参数也不论什么样的顺序aid参数出现在查询字符串。

编辑1

我发现这个指南,改写整个URL为小写。 这对我的工作只接受的解决方案似乎忽略查询字符串值。

如何在较低的情况下,显示的网址?

编辑2

现在,我使用下列条件时,发现大写字符发出301重定向。 接受的答案解决了原来的问题,但这种解决方案适用的完整的URI,域,路径和查询字符串上。

        '301 REDIRECT ON UPPERCASE URIS
        Dim fullUri As String = Request.Url.AbsoluteUri
        If fullUri.Any(Function(c) Char.IsUpper(c)) Then
            Response.RedirectPermanent(fullUri.ToLower)
        End If

Answer 1:

编辑:你说得对,没有意识到这是同一个页面。 您需要添加另一个条件。

 <rule name="URL Lower" enabled="true" stopProcessing="true">
      <match url="^(detail.aspx?)(.*)" />                        
      <conditions trackAllCaptures="true">
          <add input="{QUERY_STRING}" pattern="(.*)" />
          <add input="{QUERY_STRING}" pattern="([A-Z]+)" ignoreCase="false" />
      </conditions>
      <action type="Redirect" url="detail.aspx?{ToLower:{C:1}}" appendQueryString="false" />
 </rule>

例子:

/detail.aspx?aID=164&mode=t转换为/detail.aspx?aid=164&mode=t

和/detail.aspx?aid=164&mode=t是因为第二个规则的忽略。



文章来源: URL Rewrite to change querystring case