【发布时间】:2019-02-26 09:35:16
【问题描述】:
我正在开发在 Websphere Application Server Liberty 配置文件版本 17.0.0.3 下运行的应用程序和服务器。我已经在 Angular 4 中开发了 Web 应用程序。只要我不尝试刷新/重新加载网页,一切都运行良好。当我尝试重新加载网页时,收到 404 Not Found 错误。我怀疑问题是完整的 url 在刷新时被传递给服务器。 (参见 Ben Cole 对这篇文章的回复:What does #/ means in url?)
我的问题是我不确定将主题标签注入应用程序代码中的 url 的最佳方法是什么。我尝试简单地将其添加到 html 中的 routerLink 值,但 url 已编码,将主题标签转换为 %23,然后我的路由器无法识别 url。
我的 Angular 4 应用程序使用来自 @angular/router 的 Routes 和 RouterModule。 例如,我的路线是这样定义的:
const routes: Routes = [
{
path: '', component: LayoutComponent,
children: [
{ path: 'dashboard', loadChildren: './dashboard/dashboard.module#DashboardModule' },
{ path: 'versions', loadChildren: './versions/versions.module#VersionsModule' }
]
}
在我的 html 中,我以这种方式导航到它们:
<a [routerLink]="['/versions']"
[routerLinkActive]="['router-link-active']" class="list-group-item">
<i class="fa fa-fw"></i>Versions</a>
我的服务器网址是:http://localhost:9080/zss。当我导航到我的仪表板时,网址是:http://localhost:9080/zss/dashboard
但是,如果我尝试刷新此网页,则会收到 404 Not Found 错误。
我想我需要让 Angular 应用程序导航到如下网址:http://localhost:9080/zss/#dashboard 但我不确定在哪里调整代码来执行此操作或如何克服发生的 uri 编码。
【问题讨论】:
-
我不知道 WAS,但是您需要在该服务器上添加某种重写规则,以便它处理将路径传递给您的主应用程序文件 (index.hml)
标签: angular websphere-liberty open-liberty