Aron Marden
Aron Marden

Reputation: 3

URL rewrite between 2 urls that are being handled by the same web.config

I am getting a redirect loop when I try and implement this mobile redirect I created:

<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>

This is the catch though, the mwebsite.com.au is assigned to the same web.config as website.com.au so they are handled by the same web.config. This is the way the .net application I am dealing with is handling the request (I cannot split them up, they have to pass through this 1 web.config)

I have tested this by replacing mwebsite.com.au with google.com.au and it works perfectly but for some reason URLREWRITE cannot process the request when it has to inject mwebsite.com.au back through the same rule.

any help would be amazing.

Upvotes: 0

Views: 694

Answers (1)

cheesemacfly
cheesemacfly

Reputation: 11762

Your rule is basically saying: if {HTTP_HOST} contains website.com.au and {HTTP_USER_AGENT} contains any of midp, mobile or phone, redirect to http://mwebsite.com.au.
As you can guess, http://mwebsite.com.au contains website.com.au.

To fix this, simply tell your condition that it should START with website.com.au using the pattern ^website.com.au.

So your rule would become:

<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>

Upvotes: 1

Related Questions