我希望用户能够使用/{keyword}
作为/search/{keyword}
的快捷方式(理想情况下,只有当keyword
不包含句号或斜杠时才会使用{...}}加载页面的明显尝试。)
我有一个custom 404 page但是,由于这条路线没有控制器,我不知道如何在不使用JavaScript客户端的情况下重定向到搜索路线。 error404.html.twig
这是非常糟糕的做法。
我能想到的唯一其他解决方案是使用/{keyword}
路由,以某种方式对此进行优先排序,如果存在路径/$keyword
的路由,则加载该路由,否则重定向到{{1但是我无法看到如何确定这条路线的优先顺序,或者如何通过路径检查路线是否存在(我只能按名称查看)。
有人能想到解决方案吗?
答案 0 :(得分:3)
您需要为此路线设置最低优先级。
的routing.yml:
foo:
path: /foo
#foo route config
bar:
path: /bar
#bar route config
#other routes
#...
search_alias:
path: /{keyword}
defaults: { _controller: MyBundle:Redirect:searchKeyword }
requirements:
keyword: ^([a-zA_Z0-9\s]+)$
methods: [GET]
search_alias
只有在上面的路线不匹配时才会被调用。