URL 重写以更改查询字符串大小写



我希望在我的web.config中设置一个URL重写规则,该规则将修改以下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

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

 <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 由于第二条规则而被忽略。

最新更新