Angular 2从网址中删除哈希(#)

我正在尝试从Angular 2的URL中删除#号,但找不到如何在不产生任何问题的情况下删除它的任何好的解释。

我记得在AngularJS 1上添加起来比较容易 $locationProvider.html5Mode(true);

如果您能告诉我这是否是一种好习惯(删除#)或可能会影响应用程序的SEO(或对其进行改进),我也将不胜感激。

PS:我正在将Angular 2与打字稿一起使用


素胚勾勒不出你
浏览 378回答 3
3回答

DIEA

在角度上有定位策略查看app.module.ts在哪里启动应用程序@NgModule({.......  providers: [....    { provide: LocationStrategy, useClass: HashLocationStrategy },....]});并删除此部分,因为PathLocationStrategy是默认策略

冉冉说

上面的答案具有从URL中删除哈希的正确解释,但是当您更改LocationStrategy后端时,后端将无法理解所有Angular 2路由,因此会受到影响。以下是在后端支持下删除哈希的步骤。1)更改Angular以使用PathLocationStrategy@NgModule({&nbsp; .....&nbsp; providers: [&nbsp; &nbsp; // Below line is optional as default LocationStrategy is PathLocationStrategy&nbsp; &nbsp; {provide: LocationStrategy, useClass: PathLocationStrategy}&nbsp;&nbsp; ]})2)在index.html中更改基准Href,Angular2将处理基准Href之后的所有路由<base href="/app-context/">例如<base href="/app/">3)在后端服务器上,对于任何以下格式的请求,我们都必须呈现index.html文件"/app/**" - Render index.html for any request coming with "/app/**" patternindex.html<!doctype html><html>&nbsp; <head>&nbsp; &nbsp; <meta charset="utf-8">&nbsp; &nbsp; <title>My App</title>&nbsp; &nbsp; <base href="/app/">&nbsp; </head>&nbsp; <body>&nbsp; &nbsp; <app-root>Loading...</app-root>&nbsp; &nbsp; <script type="text/javascript" src="vendor.bundle.js"></script>&nbsp; &nbsp; <script type="text/javascript" src="main.bundle.js"></script>&nbsp; </body></html>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5