Angular没有找到直接浏览时的路由

Angular routing when directly browsed are not found

所以我定义了一些路由/home, /contact, ... 使用 ng build --prod --base-href 创建 dist 文件夹,并通过 filezilla 将 dist 文件夹的内容复制到托管服务器。直接浏览网站并从网站上重定向时没有问题,但是如果您直接浏览到website/home,则显示404 Not Found The requested URL /home was not found on this server

托管支持响应这些可能是在 .htaccess 文件中定义的 CleanURL,我们无法提供支持。

我认为干净的 url 是可读的 restcalls,但也许其意义不仅仅是 rest。但是有解决办法吗?

您更有可能没有在您的提供商中定义 HashLocationStrategy(在 app.module.ts 中)

更新到这里..我试图放入评论但无法格式化

有3种方法 第一种方式

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,..
    RouterModule.forRoot(routes, { useHash: true }) 
  ],
  declarations: [
    AppComponent, ...
  ],
  providers: [],
  bootstrap: [ AppComponent ]
})

第二种方式

@NgModule({
  declarations: [
    AppComponent, ...
  ],
  imports: [
    AppRoutingModule,
    BrowserModule,
    BrowserAnimationsModule,
    FormsModule,
    HttpModule, ...
  ],
  providers: [
    { provide: LocationStrategy, useClass: HashLocationStrategy }
  ],
  entryComponents: [],
  bootstrap: [AppComponent]
}) 

第三种方式 - 推荐用于 Angular2 使用 PathLocationStrategy

import {APP_BASE_HREF} from '@angular/common';

@NgModule({
providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]
})

有利也有弊——我用的是第 2 个,因为我来自 angular1、2、4、5(旧学校):p