您可以使用像IIRF这样的 URL 重写器来执行此操作。插入规则以返回 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”评估为非 127.0.0.1 的 IP 地址时,上述条件评估为真。这 ?!是一个零宽度的负前瞻,正则表达式末尾的 (.*) 用于捕获有时出现在该变量中的任何垃圾。条件后面的规则说,对于任何不是“redirected.htm”的 URL,将其映射到“redirected.htm”。这可以防止无休止的重写。(您还可以使用 [L] 修饰符标志来防止无休止的重写)。
此 RewriteCond+RewriteRule 将任何来自外部的请求重定向到 IIS 服务器。您可以对一组特定的白名单 IP 执行类似的操作。
IIRF 是用 C 编写的 ISAPI 过滤器,在哲学上类似于 mod_rewrite。它适用于 IIS5、6 或 7。您需要管理员权限才能设置它。您不需要“编程”,但有一个与 .htaccess 具有相似语法的 ini 文件(特别适用于 mod_rewrite 规则)。
IIRF 是免费和开源的。