您可以使用URL重写器,如IIRF来做到这一点。插入规则以返回404或任何你喜欢的来自不允许的IP的请求。这将适用于任何Web应用程序平台:PHP,Java,ASP.NET,RoR,静态html或图像,无论如何。
自述给出这样一个例子:
RewriteCond %{REMOTE_ADDR} ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$
RewriteRule ^/(?!redirected.htm)(.*)$ /redirected.htm
和它说:
上述条件评估为真时,服务器变量“REMOTE_ADDR”的计算结果为,其是IP地址NOT 127.0.0.1。 ?!是一个零宽度的负向预测,并且正则表达式末尾的(。*)用于捕获有时出现在该变量中的垃圾。条件之后的规则说,对于任何不是“redirected.htm”的URL,都将其映射到“redirected.htm”。这可以防止无尽的重写。 (你也可以用[L]修饰符标志防止无限重写)。
这RewriteCond + RewriteRule重定向任何外部发起的请求到IIS服务器。对于一组特定的白名单IP,您可以做类似的事情。
IIRF是用C语言编写的ISAPI过滤器,在哲学上与mod_rewrite类似。它适用于IIS5,6或7。您需要管理员权限才能设置它。你不需要“编程”,但是有一个与.htaccess语法相似的ini文件(专门用于mod_rewrite规则)。
IIRF是免费且开源的。