Hostinger子域名部署Flutter Web刷新404问题求助(已试方案无效)
解决Hostinger子域名部署Flutter Web刷新404问题
核心问题原因
Flutter Web属于单页应用(SPA),刷新页面时服务器会尝试直接匹配请求路径的物理文件,但SPA路由由前端接管,不存在对应物理文件就会返回404。需要通过.htaccess配置将所有非静态资源请求转发到Flutter的index.html。
正确配置步骤
确认
.htaccess放置位置
将.htaccess文件放在子域名对应的服务器根目录(比如子域名sub.yourdomain.com对应的目录通常是public_html/sub),而非主域名根目录。使用适配的
.htaccess配置
替换为以下配置(适配Flutter文件存放在子域名根目录book文件夹的场景):RewriteEngine On # 可选:强制跳转HTTPS(不需要可删除) RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 转发所有非静态资源请求到book下的index.html RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /book/index.html [L]
之前配置无效的原因
- 第一个配置重复开启
RewriteEngine,且RewriteRule未指定完整的/book/index.html路径,服务器无法定位正确的入口文件。 - 第二个配置的目标
index.html指向子域名根目录,而你的Flutter入口文件在book文件夹内,导致服务器找不到对应文件。 - 第三个配置的
RewriteBase和规则匹配逻辑未正确关联,请求转发路径存在偏差。
额外检查项
- 确认Hostinger已开启Apache的
mod_rewrite模块(cPanel中可在「Apache模块」里查看)。 - 确保
book文件夹权限为755,内部文件权限为644,避免服务器读取权限不足。 - 测试前清除浏览器缓存或使用隐私模式,排除缓存干扰。
内容的提问来源于stack exchange,提问作者MW Mansuri
相关产品推荐
相关产品推荐

