app.routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './public/home/home.component';

const routes: Routes = [
  {
    path: 'customers',
    loadChildren: '../app/customers/customers.module#CustomersModule'
  },
  {
    path: 'admin',
    loadChildren: '../app/admin/admin.module#AdminModule'
  },
  {
    path: 'home',
    component: HomeComponent
  },
  {
    path: '**',
    redirectTo: 'home',
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

这些在开发环境下可以正常工作。
如果我直接打开localhost:4200/home,则它将降落在预期的页面上。

但是,如果我直接打开ng build --prod --base-href=/myngapp/,则一个内置的和与www.domain.com/myngapp一起使用的已部署部署的仅在www.domain.com/myngapp/home上有效,然后显示404 not found错误。

最佳答案

您需要设置适当的URL重写规则。 Angular docs解释了如何对大多数流行的http服务器执行此操作。您可以在此处找到详细信息。

https://angular.io/guide/deployment#server-configuration

简单地说,就是告诉服务器无论请求的路径是什么,始终提供index.html。例如。
www.domain.com/myngapp/home->服务index.html,而不是home.html或类似的东西www.domain.com/myngapp/some/child/routing-> serv index.html,不要尝试查找some / child / routing.html或php等。

09-28 13:51