gpt4 book ai didi

Angular 5 : Allow trailing slash in routes

转载 作者:太空狗 更新时间:2023-10-29 17:25:55 29 4
gpt4 key购买 nike

我正在使用 Angular 更新一个旧网站,我必须满足的要求之一是所有路由都应保持原样(出于 SEO 目的)。

很多老网站的路由都是以斜杠结尾的(比如/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 不存在时,它对我来说可以用尾部斜线

关于 Angular 5 : Allow trailing slash in routes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425111/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com