gpt4 book ai didi

regex - 如何管理带或不带的 URL?和/

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:33:34 25 4
gpt4 key购买 nike

在我的 Koa 应用程序中,我有这种路由器:

app
.use(router(app))
.all('/', frontRoutes.home.index);

我的问题是:

  • 我的域名.com
  • 我的域名.com/
  • mydomain.com?

由相同的路由路由。它可能很棒,但对谷歌来说却不是。说它是重复的内容。所以我想将第一个和第三个重定向到第二个。喜欢这个:

app
.use(router(app))
.redirect('/\?', '/', 301)
.redirect('', '/', 301)
.all('/', frontRoutes.home.index);

尝试了一些正则表达式但没有成功。已经打开 Github 问题但也没有答案:https://github.com/alexmingoia/koa-router/issues/251 .

在此先感谢您的帮助:)

最佳答案

koa-router 没有问题。您可以使用普通的旧中间件来完成此操作:

// Redirects "/hello/world/" to "/hello/world"
function removeTrailingSlash () {
return function * (next) {
if (this.path.length > 1 && this.path.endsWith('/')) {
this.redirect(this.path.slice(0, this.path.length - 1))
return
}
yield * next
}
}

// Redirects "/hello/world?" to "/hello/world"
function removeQMark () {
return function * (next) {
if (this.path.search === '?') {
this.redirect(this.path)
return
}
yield * next
}
}

// Middleware

app.use(removeTrailingSlash())
app.use(removeQMark())
app.use(router(app))

// Routes

app
.all('/', frontRoutes.home.index)

app.listen(3000)

关于regex - 如何管理带或不带的 URL?和/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36125416/

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