IIS 重写规则 - 如果路径没有查询字符串

IIS Rewrite rule - if path does not have query string

如何编写 IIS 重写规则 if path does not have query string and any capital letter exists in path then redirect to same path with lower case

例如
http://localhost:62871/Second.aspx/Test?X=Y
重定向到:http://localhost:62871/second.aspx/test?X=Y

以下规则有效,但它也将查询字符串小写:

    <rewrite>
        <rules>
            <rule name="LowerCaseRule1" stopProcessing="true">
                <match url="[A-Z]" ignoreCase="false" />
                <action type="Redirect" url="{ToLower:{URL}}" />
            </rule>
        </rules>
    </rewrite>

变量 URL 包含整个 url - 所以 ToLower 是整个 url 的小写。

要获得所需的行为,您需要从多个服务器变量手动创建 action 的 url。

可用变量包括{HTTP_HOST}{PATH_INFO}{QUERY_STRING},然后您可以将小写函数应用于您需要的任何变量。

创建最终 url 时,您还需要在变量之间包含分隔符 :/? 以获得有效的 url .

查看此页面以快速了解变量:https://weblogs.asp.net/owscott/url-parts-available-to-url-rewrite-rules

完整重写模块文档请参见此处:https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference