Angular动态URL下的301重定向问题及解决方案咨询
动态URL的301重定向解决方案
先看你给出的URL差异:正确URL的时间戳是13位数字(比如1671794340325),错误URL里这个时间戳后面多了6个0(变成1671794340325000000)。针对这种动态错误URL,可以用正则匹配+捕获替换的方式处理,修改你的server.ts代码如下:
// 匹配错误URL的正则:捕获文章前缀、正确13位时间戳、后缀 const wrongUrlRegex = /^\/article\/news-top-story\/(.*)-(\d{13})000000_1\.html$/; const match = req.originalUrl.match(wrongUrlRegex); if (match) { // 拼接正确的URL const correctUrl = `/article/news-top-story/${match[1]}-${match[2]}_1.html`; res.redirect(301, correctUrl); } else { res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] }); }
逻辑说明:
- 正则
/^\/article\/news-top-story\/(.*)-(\d{13})000000_1\.html$/精准匹配错误URL结构:(.*):捕获文章标题部分(比如bharat-highways-invit-files-drhp-to-launch-rs-crore-ipo)(\d{13}):捕获13位的正确时间戳- 后面的
000000就是错误的多余部分
- 捕获到匹配内容后,把标题、正确时间戳和后缀拼接成正确URL,返回301重定向
- 不匹配的URL(包括正确URL和其他正常路径)则走原来的渲染逻辑
如果后续还有其他类似的动态错误URL模式,只需要调整正则表达式的匹配规则即可。
内容的提问来源于stack exchange,提问作者Ismail Shk
相关产品推荐
相关产品推荐

