0

当我尝试实现我创建的这个移动重定向时,我得到了一个重定向循环:

<rewrite>
    <rules>
        <rule name="Mobile Rewrite" patternSyntax="ECMAScript" stopProcessing="true">
            <match url=".*" ignoreCase="true" negate="false" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTP_HOST}" pattern="website.com.au" />
                <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone" />
            </conditions>
            <action type="Redirect" url="http://mwebsite.com.au" appendQueryString="false" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

这是一个问题,mwebsite.com.au 被分配到与 website.com.au 相同的 web.config,因此它们由相同的 web.config 处理。这是我正在处理的 .net 应用程序处理请求的方式(我无法将它们拆分,它们必须通过这个 1 web.config)

我通过用 google.com.au 替换 mwebsite.com.au 对此进行了测试,它运行良好,但由于某种原因,当它必须通过相同的规则注入 mwebsite.com.au 时,URLREWRITE 无法处理请求。

任何帮助都会很棒。

4

1 回答 1

1

您的规则基本上是说:如果{HTTP_HOST}包含website.com.au{HTTP_USER_AGENT}包含任何midp,mobilephone, 重定向到http://mwebsite.com.au.
你可以猜到,http://mwebsite.com.au包含website.com.au.

要解决这个问题,只需告诉您的条件,它应该从website.com.au使用 pattern开始^website.com.au

所以你的规则会变成:

<rewrite>
    <rules>
        <rule name="Mobile Rewrite" patternSyntax="ECMAScript" stopProcessing="true">
            <match url=".*" ignoreCase="true" negate="false" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTP_HOST}" pattern="^website.com.au" />
                <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone" />
            </conditions>
            <action type="Redirect" url="http://mwebsite.com.au" appendQueryString="false" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>
于 2013-09-19T14:18:10.670 回答