我在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块访问它。把头发拉到这里。
答案 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可能位于不同的标头中