我有一个非常简单的应用程序,始终可以使用以下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/1234567890
或www.myapplication.com/some/deep/nested/1234567890/
网址没有被截断,但是我得到了
Cannot GET /1234567890
或Cannot GET /1234567890/
。我也曾尝试改组职位无济于事:
app.use('/:user', express.static(path.join(__dirname, 'dist')));
app.use('/', api);
最佳答案
我为此使用express-slash。这是一个简单的中间件,在不存在时会附加一个斜杠。然后,您只需要处理包含尾部斜杠的路线。可以说这是更可取的,因为www.myapplication.com/some/deep/nested/1234567890
和www.myapplication.com/some/deep/nested/1234567890/
是不同的路径,并且对两者都呈现相同的响应并不理想(就SEO而言,最相关)。