uniapp 路由模式history不起作用是怎么回事?
在uniapp项目中配置了路由模式为history,但在实际运行时发现没有生效,页面跳转仍然是hash模式。请问这是什么原因?需要检查哪些配置或代码?如何正确启用history路由模式?
        
          2 回复
        
      
      
        在uni-app中,路由模式设置为history模式后不起作用,通常由以下原因导致:
- 
H5平台未启用history模式 
 uni-app默认使用hash模式,需在manifest.json中显式配置:{ "h5": { "router": { "mode": "history" } } }修改后重新编译运行(重要!)。 
- 
服务器未配置Fallback 
 history模式依赖服务器支持,需将所有路由指向index.html。- Nginx示例:location / { try_files $uri $uri/ /index.html; }
- Apache示例(在项目根目录创建.htaccess):RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L]
 
- Nginx示例:
- 
本地开发服务器问题 
 使用hbuilderx内置浏览器可能不支持history模式,建议用Chrome或部署到服务器测试。
- 
路由跳转方式错误 
 确保使用uni.navigateTo等API跳转,而非<a>标签或直接修改URL。
- 
基础路径(publicPath)问题 
 若项目部署在子目录,需在manifest.json中配置:{ "h5": { "publicPath": "/子目录路径/" } }
检查步骤:
- 确认manifest.json配置正确且已重新编译
- 部署后通过服务器访问(非直接打开本地文件)
- 检查浏览器控制台是否有404错误
若问题依旧,请提供具体错误信息或部署环境细节以便进一步排查。
 
        
       
                     
                   
                    


