Node.js Express - 区分大小写的URL

19

如何使URL区分大小写?

app.get()

app.get('/([a-z]{2}/)api*', function(request, response){});

在这里,app.get() 捕获了两个 URL:/EN/api/eN/api

我该怎么做,让它只能捕获小写的 URL,例如 /en/api ??

2个回答

25

从express.js API文档

大小写敏感路由 - 启用大小写敏感性,默认情况下禁用,将"/Foo"和"/foo"视为相同

您可以像这样更改默认设置:

app.set('case sensitive routing', true);

3
有没有一种方法能强制将路径转换为小写?这样可以防止重复的 URL 出现,有助于保持 SEO 的组织性。 - Costa Michailidis
1
我无法在Express 4中使其工作。我还尝试了app.enable('case sensitive routing'),但它仍然接受任何URL大小写。最后,我通过使用正则表达式而不是字符串来解决了我的问题。那样完美地解决了问题。 - Brad G.
1
使用以下代码:router = express.Router({ caseSensitive: true }); - dhrubaj
1
我相信这个软件包可以处理@Costa所说的问题 - https://github.com/iZettle/express-lowercase-paths - daniel aagentah

5
app.set('case sensitive routing', true);

只有在不在其他文件中使用时才有效。
const express = require('express');
const router = express.Router();

如果我们的情况与上述相同,只需在每个文件中执行以下操作:

const express = require('express');
const router = express.Router({caseSensitive: true});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接