我有一个非常简单的应用程序,始终可以使用以下URL结构进行访问:www.myapplication.com/some/deep/nested/1234567890/

其中1234567890是用户的帐号,每个用户可以不同。当前,如果最后的反斜杠这样保留,则无法访问该应用程序:www.myapplication.com/some/deep/nested/1234567890

实际上,如果通过这种方式访问​​应用,则URL会更改为:www.myapplication.com/1234567890

在我的app.js中给出以下内容:

app.use('/', api);
app.use('/:user', express.static(path.join(__dirname, 'dist')));


如果api是一个简单的快速路由器本身,我的React应用程序使用jQuery使用req.params中的用户编号来调用我的React应用程序,那么如何使用或不使用反斜杠来使应用程序可访问?

我尝试了各种方法,例如:

app.use('/:user/?', express.static(path.join(__dirname, 'dist')));


要么

app.use(express.static(path.join(__dirname, 'dist')));


后者防止url被截断,但只能在没有用户帐号的情况下使用,这显然是必要的:www.myapplication.com/some/deep/nested/

如果我转到www.myapplication.com/some/deep/nested/1234567890www.myapplication.com/some/deep/nested/1234567890/

网址没有被截断,但是我得到了Cannot GET /1234567890Cannot GET /1234567890/

我也曾尝试改组职位无济于事:

app.use('/:user', express.static(path.join(__dirname, 'dist')));
app.use('/', api);

最佳答案

我为此使用express-slash。这是一个简单的中间件,在不存在时会附加一个斜杠。然后,您只需要处理包含尾部斜杠的路线。可以说这是更可取的,因为www.myapplication.com/some/deep/nested/1234567890www.myapplication.com/some/deep/nested/1234567890/是不同的路径,并且对两者都呈现相同的响应并不理想(就SEO而言,最相关)。

09-04 12:31