Flutter Web路由跳转丢失index.html致刷新报错的配置问题问询
解决方案
步骤1:调整base href配置
两种修改方式二选一即可:
- 手动修改web/index.html中的base标签,将原有配置替换为:
<base href="/mojjo-test/index.html"> - 执行build命令时主动指定base href参数,无需手动修改文件:
flutter build web --base-href "/mojjo-test/index.html"
步骤2:验证路由跳转逻辑
默认哈希路由模式下,修改base href后,Flutter会基于完整的index.html路径生成哈希路由,加载完成后自动跳转的地址会变为你预期的http://example.com/mojjo-test/index.html#/,此时刷新页面浏览器会直接请求index.html文件,不会出现访问拒绝报错。
可选:自定义路由初始化(如果上述配置不生效)
如果项目中存在自定义路由配置,可以在main.dart中手动指定初始路由,强制保留index.html后缀:
import 'package:flutter/material.dart'; import 'dart:html' as html; void main() { WidgetsFlutterBinding.ensureInitialized(); // 手动修正初始路径,保留index.html if (!html.window.location.pathname.endsWith('index.html')) { html.window.location.replace('${html.window.location.origin}/mojjo-test/index.html${html.window.location.hash}'); return; } runApp(const MyApp()); }
内容的提问来源于stack exchange,提问作者ashutosh
相关产品推荐
相关产品推荐

