Flutter Web部署IIS服务器后刷新页面出现404错误求助
Flutter Web部署IIS后刷新页面404问题解决方法
你已经配置了url_strategy包和<base href="/">,这些设置没问题。出现刷新404的核心原因是:Flutter Web是单页应用,页面内跳转由前端路由处理,但刷新时浏览器会直接向IIS请求当前URL对应的物理文件,而这些路由路径在服务器上并没有实际的文件或目录,所以IIS返回404。
解决这个问题需要给IIS配置URL重写规则,把所有非静态文件的请求都转发到index.html,让Flutter前端来处理路由。具体步骤如下:
先安装IIS URL重写模块:打开IIS管理器,在服务器节点的“功能视图”里找到“Web平台安装程序”,搜索并安装“URL Rewrite”模块(已安装可跳过)。
在Flutter Web站点根目录下创建
web.config文件,写入以下配置:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Flutter Web 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> <action type="Rewrite" url="/index.html" /> </rule> </rules> </rewrite> <staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> <mimeMap fileExtension=".webmanifest" mimeType="application/manifest+json" /> </staticContent> </system.webServer> </configuration>
该配置会让IIS忽略对不存在的文件/目录的请求,转而把请求转发到index.html,同时添加了Flutter Web需要的MIME类型,避免静态资源加载异常。
- 保存
web.config后,重启IIS站点或整个IIS服务,刷新页面测试即可正常访问。
内容的提问来源于stack exchange,提问作者ARUN KUMAR
相关产品推荐
相关产品推荐

