URL 和轨道路由系统中的双斜杠

Double slashes in URL and rails route system

本文关键字:系统 轨道 路由 URL      更新时间:2023-09-26

在我的 Rails 应用程序中有两个 URL,例如

http://myurl/foo/bar
http://myurl/foo//bar

以相同的方式处理。从 Rails 中忽略斜杠之间包含的空属性是非常聪明的,但是当我将所有内容与前端 Javascript 框架链接时,它就会成为一个问题;我的前端路由系统因此而爆炸。

在我看来,这应该被理解为 Rails URL 中的一个问题,因为它看起来更严格和合乎逻辑。

因此,当routes.rb检测到路径中的//时,我想简单地将用户重定向到主页;这怎么可能?

谢谢;)

编辑:

我尝试过这种事情

match ':url' => redirect('/'), :constraints => { url: /'/+/ }, via: [:get, :post]

而且它不起作用,似乎在 rails 首先操作绝对 URL 或类似的东西之后读取了路由文件......

我会尝试编写一个正则表达式,在将路由传递给特定控制器以处理路由之前对其进行验证。如果验证证明 url 无效,则会重定向到主路由