NodeJS路由有或没有文件扩展名

Min*_*Vox 3 javascript regex node.js express

通过以下路线:

app.get('/', controller.web.Home);
Run Code Online (Sandbox Code Playgroud)

如何添加'/'允许匹配的内容/,/index以及/index.html?我还想对所有其他路由使用此方法,以便用户在将.html添加到路径时看不到错误页面.

我在Express网站上看到过这个,但是对于匹配的倍数没有明确的解释.提前致谢.

nem*_*035 5

Express使用path-to-regex来路由字符串,这意味着您可以使用正则表达式或字符串模式来匹配路由.

如何在'/'内添加允许匹配/,/ index和/index.html的内容

像这样的东西会起作用:

app.get('/|index|index.html', controller.web.Home);
Run Code Online (Sandbox Code Playgroud)

我还想对所有其他路由使用此方法,以便用户在将.html添加到路径时看不到错误页面.

您还可以编写一个小辅助函数来处理任何路径:

function htmlExt(route) {
  return route + '|' + route + '.html';
}
Run Code Online (Sandbox Code Playgroud)

并将其用于任何路线:

app.get(htmlExt('index'), controller.web.Home);
app.get(htmlExt('blog'), controller.web.Blog);
// ...
Run Code Online (Sandbox Code Playgroud)

其他方法

你也可以传入一个路径数组,所以这也应该工作:

function htmlExt(route) {
  return [route, route + '.html'];
}
app.get(htmlExt('index'), controller.web.Home);
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用正则表达式.也许是接受路线和可选.html扩展的人:

app.get(/index(.html)?/, controller.web.Home);
Run Code Online (Sandbox Code Playgroud)

您可以在Express Routing文档中找到其他有用的示例.