重定向到具有修改参数的请求 url



我有一条像/users/HGB8J/这样的路由,如果用户不只使用大写字母作为userTag,我想做一个 301 重定向。我正在尝试编写一个中间件,以确保多个路由的大写userTag如下所示。

我的问题:

如何仅使用修改后的参数(在本例中为大写userTag(重定向到"原始网址">

function ensureTagIsUppercased(req, res, next) {
let userTag = req.params.userTag
if(userTag === userTag.toUpperCase())
next()
// How can I build the same URL just with the uppercased userTag?
let url = ''
return res.redirect(301, url)
}
router.get('/:userTag', ensureTagIsUppercased, profile)
router.get('/:userTag/refresh', ensureTagIsUppercased, refreshProfile)

例子:

用户请求 => https://example.com/users/HGB8J/请求可以通过

用户请求 => https://example.com/users/hgB8J/应将其重定向到 https://example.com/users/HGB8J/

用户请求 => https://example.com/users/hgB8J/refresh 应将其重定向到 https://example.com/users/HGB8J/refresh

到目前为止,我想出的最佳解决方案是将baseUrl中的原始参数替换为upperCased参数。但是,这可能会导致冲突,其中 URl 的其他部分大写,这些部分不属于我的参数。

let redirectPath = req.originalUrl.replace(req.params.userTag, userTagUpperCased)
return res.redirect(301, redirectPath)

最新更新