【发布时间】:2017-06-30 00:33:51
【问题描述】:
我正在寻找带有 ExpressJS 服务器的 SPA 的规范化/规范化 URL。
虽然它是由服务器端路由器备份的 SPA - 应用程序 URL 的模板可能会有所不同。区别之一是<link rel="canonical" href="https://example.com{{ originalPath }}"> 标签。不是相关细节,而是解释问题的背景。我预计只有一个 URL 响应为 200,其变体被重定向到 301/302(适用于活人和搜索引擎)。
我想让 url 区分大小写且严格(没有额外的斜线),类似于 Router 选项,但非规范的 url(大小写或额外的斜线不同)应该做 301/302 重定向到规范url 而不是 404。
在大多数应用程序中,我只想强制 * 路由的 url 小写(查询除外),没有额外的斜杠。 IE。 app.all('*', ...),重定向为:
/Foo/Bar/ -> /foo/bar
/foo/Bar?Baz -> /foo/bar?Baz
但是,如果明确定义了路由,则可能会有例外。例如,有骆驼套路线:
possiblyNestedRouter.route('/somePath')...
possiblyNestedRouter.route('/anotherPath/:Param')...
并且所有非规范的url都应该重定向到规范的(参数大小写保持不变):
/somepath/ -> /somePath
/anotherpath/FOO -> /anotherPath/FOO
规范 url 背后的逻辑非常简单,所以奇怪的是我在这个主题上找不到任何关于 ExpressJS 的内容。
最好的方法是什么?是否已经有可以提供帮助的中间件?
【问题讨论】:
标签: javascript node.js express routing