我希望在我的web.config中设置一个URL重写规则,该规则将修改以下URL:
/detail.aspx?aID=164&mode=t
To(见aid
的情况):
/detail.aspx?aid=164&mode=t
有人可以帮助我吗?这里唯一要提到的是,如果最后没有mode
参数,并且无论aid
参数在查询字符串中出现的顺序如何,规则仍然有用。
编辑1
我找到了这个指南,它将整个URL重写为小写。这对我有用,只有接受的解决方案似乎忽略了查询字符串值。
How to display URL in lower case?
编辑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
答案 0 :(得分:2)
编辑: 你是对的,没有意识到它是同一页。 你需要添加另一个条件。
<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被忽略。