opticon
opticon

Reputation: 3594

URL Rewrite not working on IIS 10.0

I'm using URL Rewrite on IIS 10.0 and have the following rule configured at the server level (applicationHost.config). I've tried it in my web.config to no avail as well.

   <rewrite>
        <globalRules>
            <rule name="redirect">
                <match url="/admin" />
                <conditions>
                    <add input="{REMOTE_ADDR}" pattern="10.30.*.*" negate="true" />
                </conditions>
                <action type="Rewrite" url="/error" />
            </rule>
        </globalRules>
    </rewrite>

Is there anything immediately obviously wrong here? I want any external traffic trying to hit /admin to get redirected to an error page, and only allow a single internal IP block to access it. Pulling my hair out over here.

Upvotes: 1

Views: 11575

Answers (2)

DaveDean1
DaveDean1

Reputation: 349

You may need to install Application Request Routing, which is an extension to IIS and is available here: https://www.iis.net/downloads/microsoft/application-request-routing

Upvotes: 3

Victor Leontyev
Victor Leontyev

Reputation: 8736

There is a problem in match regexp. It shouldn't start with slash. Correct is ^admin (^ means start of url)

<rule name="redirect">
    <match url="^admin" />
    <conditions>
        <add input="{REMOTE_ADDR}" pattern="10.30.*.*" negate="true" />
    </conditions>
    <action type="Rewrite" url="/error" />
</rule>

And i have couple of notes:

1) For IP validation better to have regexp like that: 10.30.[0-9]{1,3}.[0-9]{1,3} instead of 10.30.*.*

2) Depends on your load balancer and network infrastructure, but you might need to check {HTTP_X_Forwarded_For} header instead {REMOVE_ADDR}, because client's IP might be in different header

Upvotes: 0

Related Questions