URL重写不适用于IIS 10.0

时间:2017-11-10 22:47:17

标签: asp.net iis url-rewriting

我在IIS 10.0上使用URL Rewrite,并在服务器级别(applicationHost.config)配置了以下规则。我已经在我的web.config中尝试了它也无济于事。

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

这里有什么明显的错误吗?我希望任何尝试命中/ admin的外部流量被重定向到错误页面,并且只允许单个内部IP块访问它。把头发拉到这里。

2 个答案:

答案 0 :(得分:1)

您可能需要安装“应用程序请求路由”,它是IIS的扩展,可在以下位置找到:https://www.iis.net/downloads/microsoft/application-request-routing

答案 1 :(得分:0)

匹配正则表达式中存在问题。它不应该以斜线开头。正确是^admin^表示网址的开头)

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

我有几个笔记:

1)对于IP验证,最好有这样的正则表达式:10.30.[0-9]{1,3}.[0-9]{1,3}而不是10.30.*.*

2)取决于您的负载均衡器和网络基础架构,但您可能需要检查{HTTP_X_Forwarded_For}标头而不是{REMOVE_ADDR},因为客户端的IP可能位于不同的标头中