在我的Koa应用中,我就是这种路由器:
app
.use(router(app))
.all('/', frontRoutes.home.index);
我的问题是:
通过相同的路线路由。它可能很棒,但对谷歌来说却不是。说它是重复的内容。所以我想将第一个和第三个重定向到第二个。喜欢这个:
app
.use(router(app))
.redirect('/\?', '/', 301)
.redirect('', '/', 301)
.all('/', frontRoutes.home.index);
尝试了一些正则表达式没有成功。已经打开了一个Github问题,但没有回答:https://github.com/alexmingoia/koa-router/issues/251。
提前感谢您的帮助:)
答案 0 :(得分:2)
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)