我想从http://domain/dist/index.html
开始/加载我的网站我已将虚拟主机指向dist / index.html,因此我可以使用此http://domain
加载我的网站我的app.routes.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { PathLocationStrategy ,LocationStrategy } from '@angular/common';
import { SelectivePreloadingStrategy } from './selective-preloading-strategy';
import { NotFoundComponent } from './not-found/not-found.component';
const routes: Routes = [
{ path: "", loadChildren: "app/site/site-layout/site-layout.module#SiteLayoutModule" },
{ path: "admin", loadChildren: "app/admin/admin-layout/admin-layout.module#AdminLayoutModule" },
{ path: "**", component: NotFoundComponent }
];
@NgModule({
imports: [ RouterModule.forRoot(
routes,
{ preloadingStrategy: SelectivePreloadingStrategy }
)],
exports: [ RouterModule ],
providers: [
{ provide: LocationStrategy, useClass: PathLocationStrategy },
]
})
export class AppRoutingModule {}
使用上面的策略,一切都很好,但我有http:/ domain / admin是我网站的不同部分,所以当我直接从url打开它时,它会给我404错误。同样在所有其他路线上,如果我从网址加载它,它将给出404。
现在我尝试了HashLocationStrategy,解决了这个404错误问题。但是,如果我在http://domain/#并且在同一窗口上编辑网址,例如http://domain/#/admin然后前面布局的CSS会在那里。我不希望这个css在admin。它是两个布局css之间的冲突。在第二次重装时没关系。
有没有解决方案?
任何角度无条件选项而没有主题标签,而不是脸版重新加载404错误。
仅供参考,我有服务器调用NodeJS。但我希望我的网站首先从angular dist加载,而不是从服务器加载。
感谢。
答案 0 :(得分:1)
它给你一个404错误,因为当你输入url并点击从你的服务器输入浏览器请求http://domain/admin
(node.js)并且node.js没有那个路由时,Angular处理客户端。要解决此问题,您可以在服务器端定义每个路由,也可以执行以下操作:
app.get('/*', function(req, res, next) {
res.sendFile('index.html', { root: __dirname + '/dist' });
});
注意:index.html的文件夹路径只是一个示例。
这会将每个外部网址更改重定向到您的index.html,并从那里开始处理路由。
作为附注,我不建议使用HashLocationStrategy
,因为它会制动服务器端渲染,这通常是生产环境所必需的。
有关此主题的更多信息:Is there any downside of HashLocation Strategy?