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

Flutter Web生产环境移除URL哈希后刷新出现404错误的解决方案咨询

Flutter Web生产环境移除URL哈希后刷新出现404错误的解决方案咨询

兄弟,我之前也碰到过和你完全一样的问题!你这个情况本质是Flutter Web属于单页应用(SPA),当你用PathUrlStrategy()去掉URL里的哈希后,开发模式下Flutter自带的调试服务器已经帮你处理了路由转发,但部署到IIS上时,刷新页面的请求会被IIS当成物理文件路径去查找——可这些路由都是前端虚拟路由,根本没有对应的物理文件,所以直接返回404了。

给你整理了一套亲测有效的解决步骤,适配你用的Flutter 3.29.0和IIS环境:

1. 先确认IIS安装了URL重写模块

IIS默认没有自带URL重写功能,你需要先安装URL重写模块v2(去微软官方渠道下载安装即可,安装完成后重启IIS)。

2. 修改web.config配置

在你现有的web.config文件里,给<system.webServer>节点添加URL重写规则,完整配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <!-- 保留你原来的staticContent配置 -->
    <staticContent>
      <mimeMap fileExtension=".arb" mimeType="application/json" />
      <mimeMap fileExtension=".frag" mimeType="text/plain" />
      <mimeMap fileExtension=".wasm" mimeType="application/wasm" />
      <mimeMap fileExtension=".env" mimeType="text/plain" />
      <mimeMap fileExtension=".symbols" mimeType="text/plain" />
      <mimeMap fileExtension=".last_build_id" mimeType="text/plain" />
    </staticContent>

    <!-- 新增URL重写规则 -->
    <rewrite>
      <rules>
        <rule name="Flutter 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" />
          </conditions>
          <!-- 将请求转发到index.html,交给Flutter前端路由处理 -->
          <action type="Rewrite" url="index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

3. 额外的IIS站点配置检查

  • 确保你的IIS站点的应用池设置里,.NET CLR版本选择无托管代码(因为Flutter Web是静态站点,不需要.NET托管)
  • 确认所有Flutter build出来的web文件(包括index.html、assets文件夹等)都正确上传到了IIS站点的根目录

验证效果

修改完配置后,重启你的IIS站点,然后:

  • 访问不带哈希的路由,比如http://ip_address:port/my_app
  • 刷新页面,应该不会再出现404错误了
  • 直接访问任意前端路由路径,也能正常加载页面

这个配置的核心就是让IIS把所有非物理资源的请求都转发到Flutter的入口文件index.html,这样前端路由就能接管这些请求,和开发模式下的行为保持一致了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 10:59:31