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

部署在Microsoft IIS服务器的Gatsby站点静态资源报404错误如何解决

Gatsby 部署到 IIS 静态资源404修复方案

1. 补全缺失的MIME类型

IIS默认未识别Gatsby常用的现代资源格式后缀,会直接返回404,按以下步骤配置:

  • 打开IIS管理器,定位到对应站点,双击「MIME类型」功能
  • 点击右侧操作栏的「添加」,依次补充以下映射:
    • 扩展名:.webmanifest,MIME类型:application/manifest+json
    • 扩展名:.webp,MIME类型:image/webp
    • 扩展名:.avif,MIME类型:image/avif
    • 若存在其他自定义后缀的静态资源报错,按对应标准MIME类型补充即可

2. 修正URL重写规则

如果配置了SPA路由的重写规则,错误的规则会拦截/static目录下的静态资源请求,可直接在站点根目录新建web.config文件写入以下配置,同时覆盖MIME和重写规则:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".webmanifest" mimeType="application/manifest+json" />
      <mimeMap fileExtension=".webp" mimeType="image/webp" />
      <mimeMap fileExtension=".avif" mimeType="image/avif" />
    </staticContent>
    <rewrite>
      <rules>
        <rule name="Gatsby SPA Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/static/.*" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

如果是手动在IIS配置的重写规则,直接在规则的条件里新增排除项,匹配^/static/.*路径时不执行重写即可。

3. 检查目录访问权限

  • 确认站点运行身份(默认是IUSR账户)对static目录有读取权限,右键目录选择「属性-安全」,核对对应账户的权限配置,缺少读取权限时补充即可。

4. 验证构建产物完整性

  • 本地重新执行gatsby build,检查生成的public目录下是否存在报错404的对应资源,排除构建过程异常导致的资源缺失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:45:08