Angular 5:允许在路径中使用尾随斜杠
发布时间:2020-12-17 07:16:33 所属栏目:安全 来源:网络整理
导读:我正在使用Angular更新一个旧网站,我必须满足的一个要求是所有路由都应该保持原样(出于搜索引擎优化的目的). 许多旧网站的路线都以斜线(Like / my / route /)结束,其中一些以.html结尾,如/my/route.html. 问题是routerLink删除每条路线中的最后一个斜线,斜线
我正在使用Angular更新一个旧网站,我必须满足的一个要求是所有路由都应该保持原样(出于搜索引擎优化的目的).
许多旧网站的路线都以斜线(Like / my / route /)结束,其中一些以.html结尾,如/my/route.html. 问题是routerLink删除每条路线中的最后一个斜线,斜线(我的路线现在是/ my / route). 如何让routerLink保持尾随斜杠? 这里可以看到一个很好的例子:AngularTrailingSlash. 解决方法
我在下面添加了你的app.module.ts
import {Location,PathLocationStrategy} from '@angular/common'; const _orig_prepareExternalUrl = PathLocationStrategy.prototype.prepareExternalUrl; PathLocationStrategy.prototype.prepareExternalUrl = function(internal) { const url = _orig_prepareExternalUrl.call(this,internal); if (url === '') { return url; } console.log('For ' + internal + ' we generated ' + url); if (url.endsWith('.html')) { return url; } if (url.endsWith('/')) { return url; } return url + '/'; }; Location.stripTrailingSlash = function (url) { const /** @type {?} */ match = url.match(/#|?|$/); const /** @type {?} */ pathEndIdx = match && match.index || url.length; const /** @type {?} */ droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0); const first = url.slice(0,droppedSlashIdx); const last = url.slice(pathEndIdx); if (first.endsWith('.html')) { return first + last; } return first + '/' + last; }; 当.html不存在时,它现在对我有一个尾随斜杠 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |