我想阻止(或允许)来自 IIS 中站点的特定 URL 的某些 ip。实际上,我的 web.config 中有用于重写 url 的规则:
<rule name="FOO_RULE" stopProcessing="true">
<match url="foo/(.*)" ignoreCase="false" />
<action type="Rewrite" url="http://pippo.it/{R:0}" logRewrittenUrl="true" />
</rule>
此规则适用于所有 IP 呼叫者,这没关系。
现在,我需要相同的规则来阻止特定路径的某些 IP。问题是路径以“foo/”开头(例如“foo/rest/API/getName”),而 IIS 仅适用于 FOO_RULE。
我尝试过:
- 在我网站的同一个 web.config 中仅为该路径(“foo/rest/API/getName”)EXCEPTION_FOO_PATH 创建了一个新规则,并限制了一些 IP,例如:
<rules>
<rule name="FOO_RULE" stopProcessing="true">
<match url="foo/(.*)" ignoreCase="false" />
<action type="Rewrite" url="http://pippo.it/{R:0}" logRewrittenUrl="true" />
<conditions>
<add input="{REQUEST_URI}" pattern="foo/rest/API/getName" negate="true" />
</conditions>
</rule>
<rule name="EXCEPTION_FOO_PATH">
<match url="foo/rest/API/getName" />
<conditions>
<add input="{REMOTE_ADDR}" pattern="111.222.333.444" negate="true" />
</conditions>
<action type="Rewrite" url="http://pippo.it/{R:0}" logRewrittenUrl="true" />
</rule>
</rules>
这不起作用(如果我在 FOO_RULE 中评论条件,则相同);
- 在 IIS 的主站点内创建了一个应用程序,其中包含“foo/rest/API/getName”规则(生成一个新的 web.config)并为某些 IP 添加了限制(来自插件 IIS),但仍然无法正常工作;
这个概念是不破坏原来的 FOO_RULE
有人知道吗?先感谢您!