我创建了一个混合应用程序,可以同时运行Angular 7和AngularJS代码。我已经使用ng build创建了一个build,并将该文件夹作为应用程序托管在IIS中,作为默认网站下的myapp,并且在index.html中给出了<base href="/myapp/">
。它是没有任何路由的单页应用程序。我的左侧面板包含程序列表,单击程序时,程序详细信息将加载到右侧面板上。因此,我的应用程序网址如下:http://localhost/myapp/?pid=6133&view=overview
。问题是,当我单击程序时,它将在URL中添加myapp。因此,当我第二次单击程序时,我的网址将类似于http://localhost/myapp/myapp/?pid=6133&view=overview
。它一直在添加myapp。
能不能让我知道是什么问题?
答案 0 :(得分:0)
第一个“ myapp”是IIS添加的应用程序上下文,第二个“ myapp”是您在index.html中提供的基本href。
http://localhost/myapp/myapp/?pid=6133&view=overview
我有同样的问题。因此,我遵循的解决方案是使用HashLocationStrategy
{ provide: LocationStrategy, useClass: HashLocationStrategy }
并构建用于生产的应用程序
ng build --prod --base-href=/myapp/
通过提供基本路径,我确保了样式和其他文件的正确加载,因为样式和runtime.js等文件出现404错误。
通过使用HashLocationStrategy,我解决了刷新页面时出现的404错误。
答案 1 :(得分:0)
HashLocationStrategy的主要问题是'#'之后的每个字符都不会发送到服务器。 这会造成很多麻烦。 参见explanation。