由同一web.config处理的2个URL之间的URL重写

时间:2013-09-19 02:20:38

标签: iis redirect url-rewriting web-config

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

<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进行了测试,但它运行良好但由于某种原因,URLREWRITE无法在必须通过相同规则注入mwebsite.com.au时处理该请求。 / p>

任何帮助都会令人惊叹。

1 个答案:

答案 0 :(得分:1)

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

要解决此问题,只需告诉您的情况,它应该使用website.com.au模式^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>