为何我的Angular项目URL为localhost:4200/#/而非localhost:4200/?
Angular URL 带/#/的原因
这是因为你的Angular项目启用了HashLocationStrategy路由策略,而非默认的PathLocationStrategy。
为什么会出现这种情况?
- 兼容性适配:部分老旧服务器不支持HTML5 History API,无法正确解析非静态资源的URL路径。Hash模式下,服务器仅处理
#之前的部分,#之后的路由由Angular客户端自行解析,避免部署后出现路由404问题。 - 预制仪表盘的默认配置:多数Angular预制模板或仪表盘为了适配更多服务器环境,会默认启用Hash模式,降低部署时的配置成本。
验证当前路由策略
查看项目根模块(通常是app.module.ts)中的路由配置,是否显式设置了useHash: true:
RouterModule.forRoot(routes, { useHash: true })
若要去掉/#/,切换到PathLocationStrategy需注意:
- 配置服务器支持HTML5路由:比如Nginx需设置
try_files $uri $uri/ /index.html;,Apache需启用mod_rewrite并配置规则,让所有路由请求都返回Angular入口文件。 - 移除路由配置中的
useHash: true选项,恢复默认的PathLocationStrategy。
内容的提问来源于stack exchange,提问作者James McCorkindale
相关产品推荐
相关产品推荐

