You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows IIS中拒绝根路径('/')访问并屏蔽爬虫请求?

IIS下拦截ASP.NET Core API根路径爬虫请求的可行方案

完全可行,你可以通过IIS配置或ASP.NET Core代码层实现需求,既能拦截根路径(/)的爬虫请求、避免日志泛滥,又不会影响/api/开头的正常API调用。以下是具体方案:

方案一:IIS URL重写规则(无需修改代码)

直接通过IIS的URL重写模块拦截根路径请求,还能配置不记录这类请求的日志,从源头解决日志泛滥问题:

  1. 打开IIS管理器,定位到目标API站点,进入「URL重写」功能
  2. 添加空白规则,按如下配置:
    • 匹配URL:选择「正则表达式」,模式填写^/$(精准匹配根路径请求)
    • 操作:选择「自定义响应」,状态码设为404,状态描述留空或填Not Found
    • (可选)添加服务器变量LOG_REQUEST并设为0,让IIS不记录该请求的日志

也可以直接编辑站点的web.config文件,在<system.webServer>节点内添加以下配置:

<rewrite>
  <rules>
    <rule name="Block Root Requests" stopProcessing="true">
      <match url="^/$" />
      <action type="CustomResponse" statusCode="404" statusReason="Not Found" statusDescription="The requested resource does not exist." />
      <serverVariables>
        <set name="LOG_REQUEST" value="0" />
      </serverVariables>
    </rule>
  </rules>
</rewrite>

方案二:ASP.NET Core中间件(代码层面管控)

如果需要跨部署环境生效,或者希望在代码里统一处理,可以添加自定义中间件拦截根路径请求:
在Program.cs(.NET 6+)的管道配置中,在路由注册前添加以下中间件:

// 拦截根路径请求,在UseRouting之前添加以确保优先处理
app.Use(async (context, next) =>
{
    if (context.Request.Path == "/")
    {
        context.Response.StatusCode = StatusCodes.Status404NotFound;
        await context.Response.WriteAsync(string.Empty);
        return;
    }
    await next();
});

app.UseRouting();
// 后续的API路由配置...

如果要避免日志记录这类请求,可在appsettings.json中添加日志过滤规则:

"Logging": {
  "LogLevel": {
    "Default": "Information",
    "Microsoft.AspNetCore": "Warning"
  },
  "Filters": [
    {
      "Name": "RequestPath",
      "Args": {
        "Path": "/",
        "LogLevel": "None"
      }
    }
  ]
}

进阶优化:仅拦截爬虫请求

如果不想拦截所有根路径请求(比如后续可能添加正常访问场景),可以在IIS规则中添加User-Agent条件,只拦截常见爬虫的请求:
在规则的<conditions>节点中添加:

<conditions>
  <add input="{HTTP_USER_AGENT}" pattern="bot|crawl|spider|scraper" ignoreCase="true" />
</conditions>

内容的提问来源于stack exchange,提问作者sommmen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:27:35