angular - 手动使用url导航时的角度应用程序404s
问题描述
我有一个使用 MVC 并托管在 IIS 上的 Angular 7 网站。
由于我们使用 MVC,我们在_Layout.cshtml
(using @RenderBody()
) 中提供 index.html,然后使用控制器提供index.cshtml
包含<app-root></app-root>
标签的控制器
该应用程序工作得很好,但是,当尝试手动导航到一个 url 时(例如http://my-site.com/endpoint
,使用导航控件时可以访问,但在地址栏中手动输入它,它会引发 404 错误。
我一直看到“重定向到 index.html”,但 index.html 存在于 Angular 应用程序中,除非导航到http://my-site.com/index.html
. 那么如何通过重定向到 index.html 来服务我的端点视图呢?我该怎么做呢?
我已经在 SO 上进行了大量阅读和尝试,但没有什么真正符合我的问题,而且我似乎没有取得任何进展。
如果您需要查看我的代码,请告诉我,但根据我阅读的内容,这需要在托管服务器上处理。任何帮助将不胜感激。
解决方案
当您使用导航控件进行导航时,您正在使用角度路由器模块,但是当您键入端点时,我觉得 IIS 正在寻找 Angular“外部”的这条路径。
您是否尝试过将 LocationStrategy 作为提供程序导入并在 app.module.ts 文件中使用 HashLocationStrategy?
providers: [
{ provide: LocationStrategy, useClass:HashLocationStrategy }
],
此策略将在 Angular 应用程序中的所有路径前加上 /#/ 并确保任何 # 片段都不会发送到 IIS 服务器。
推荐阅读
- wordpress - 创建 .htaccess 重定向规则,删除从根目录而不是子目录提供的文件的扩展名?
- javascript - 如何在 React js 中从客户端服务获取 cookie 值到服务器服务?
- angular - 绑定到Angular 12中div的未知属性
- sapui5 - 在生命周期内无法更改应用本地化
- laravel - Laravel 下载图片
- flutter - Flutter Listview builder在热重载之前是空白的
- linux - cloud-init 使用 DHCP 中给定的域作为主机名
- string - 使用 Rust 中的自定义派生宏获取具有任何结构的字段名称的原始 vec
- reactjs - 如何在功能组件上同时使用 withWidth 和 withStyles 作为高阶组件?
- excel - EXCEL INDIRECT 动态地显示工作表和单元格