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等。