我已将我的单页应用程序存储在服务器中名为“myapp”的文件夹中。我已将 base 中的 URL 更改为 http://example.com/myapp/` .
我的项目有两个页面。所以我实现了 Angular 2 路由。我将默认页面设置为登录。当我在浏览器中键入 http://example.com/myapp/
时,它会自动重定向到 http://example.com/myapp/login
。但是,如果刷新该页面,我会收到 404
错误,提示未找到 http://example.com/myapp/login
。
但是如果我使用精简版服务器运行我的项目,一切正常。在这种情况下,index.html 中的基本 URL 将为 "/"
。如何解决?
Angular 2 最终版更新
在 app.module.ts 中:
添加导入:
import { HashLocationStrategy, LocationStrategy } from '@angular/common';
在 NgModule 提供者中,添加:
{provide: LocationStrategy, useClass: HashLocationStrategy}
示例 (app.module.ts):
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { HashLocationStrategy, LocationStrategy } from '@angular/common';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule],
providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}],
bootstrap: [AppComponent],
})
export class AppModule {}
备选
使用带有 {useHash: true} 参数的 RouterModule.forRoot。
示例:(来自 angular docs)
import { NgModule } from '@angular/core';
...
const routes: Routes = [//routes in here];
@NgModule({
imports: [
BrowserModule,
FormsModule,
RouterModule.forRoot(routes, { useHash: true })
],
bootstrap: [AppComponent]
})
export class AppModule { }