繁体   English   中英

表达式太复杂 IIS Url 在 windows 服务器 2019 中重写

[英]Expression too complex for IIS Url rewrite in windows server 2019

我有一个规则在 IIS 8.5 中运行良好,包含在 Windows Server 2012 R2 中,但在 IIS 10.0 Windows server 2019 中给我一个错误:

HTTP 错误 500 表达式...无法匹配,因为它太复杂了。

简而言之,该规则捕获了 url 的 6 个参数,每个参数都是可选的,可以是任意值(只能是字母和数字,例如:

http://www.example.com/aaa1/bbb2/ccc3/ddd4/eee5/fff6

重写:

http://www.example.com/example.com/Prj/aaa1.asp?gsPar001=aaa1&gsPar002=bbb2&gsPar003=ccc3&gsPar004=ddd4&gsPar005=eee5&gsPar006=fff6

但是如果我有 1-5 个参数缺少规则必须再次匹配,则只有第一个参数 /aaa1 是必需的。

这是规则:

<rule name="Url_Rwr" enabled="true">
    <match url="([_0-9a-zA-Z-]+)\/?([_0-9a-zA-Z-]*)\/?([_0-9a-zA-Z-]*)\/?([_0-9a-zA-Z-]*)\/?([_0-9a-zA-Z-]*)\/?([_0-9a-zA-Z-]*)" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
             <add input="{HTTP_HOST}" pattern="^(www.)?([^/]+)" />
        </conditions>
        <action type="Rewrite" url="/{C:2}/Prj/{R:1}.asp?gsPar001={R:1}&amp;gsPar002={R:2}&amp;gsPar003={R:3}&amp;gsPar004={R:4}&amp;gsPar005={R:5}&amp;gsPar006={R:6}" />
</rule>

只是为了知识,如果我写一个较短的规则它可以正常工作:

           <rule name="Url_Rwr_3PAR" enabled="true" stopProcessing="true">
                <match url="^([_0-9a-zA-Z-]+)\/?([_0-9a-zA-Z-]*)\/?([_0-9a-zA-Z-]*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_HOST}" pattern="^(www.)?([^/]+)" />
                </conditions>
                <action type="Rewrite" url="/{C:2}/Prj/{R:1}.asp?gsPar001={R:1}&amp;gsPar002={R:2}&amp;gsPar003={R:3}" />
            </rule>

有什么建议吗? 这是一个错误吗?

更新:我发现了关于这个问题的更具体的事情。

如果我有一个简单的 url 规则运行良好,没有错误,例如: http://www.example.com/aaa1/bbb2/ccc3/ddd4/eee5/fff6

如果我有更复杂的 url 像这样: http://www.example.com/print-preview/4113405466783653653534728581189576/sismabonus-110-and-change-of-destination-of-use

给出错误 500.50 表达式“([_0-9a-zA-Z-]+)/?([_0-9a-zA-Z-] )/?([_0-9a-zA-Z-] )/?( [_0-9a-zA-Z-] )/?([_0-9a-zA-Z-] )/?([_0-9a-zA-Z-]*)" 匹配失败,因为它太复杂了

所以与参数的数量和长度有关。

您必须创建两个规则,一个是处理 3 个文件夹,另一个是处理 6 个文件夹路径。

<rule name="Url_Rwr3" enabled="true" stopProcessing="true">
    <match url="^([^/]+)/([^/]+)/([^/]+)/?$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTP_HOST}" pattern="^(www.)?([^/]+)" />
        </conditions>
        <action type="Rewrite" url="/{C:2}/Prj/{R:1}.asp?gsPar001={R:1}&amp;gsPar002={R:2}&amp;gsPar003={R:3}" appendQueryString="true" logRewrittenUrl="true" />
</rule>

在此处输入图像描述

 <rule name="Url_Rwr6" enabled="true" stopProcessing="true">
    <match url="^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTP_HOST}" pattern="^(www.)?([^/]+)" />
        </conditions>
        <action type="Rewrite" url="/{C:2}/Prj/{R:1}.asp?gsPar001={R:1}&amp;amp;gsPar002={R:2}&amp;amp;gsPar003={R:3}&amp;amp;gsPar004={R:4}&amp;amp;gsPar005={R:5}&amp;amp;gsPar006={R:6}" appendQueryString="true" logRewrittenUrl="true" />
</rule>

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM