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