在我的路线文件中,我们最初设置了此路径:
match '/search/*tag' => 'search#search'
我们现在要从网址中删除“搜索”一词。所以我添加了一条新路线:
match '/*tag' => 'search#search'
一切都很美妙。我们想要更新旧路由以重定向到新路由以保持seo和书签正常工作。
match '/search/*tag' => redirect {|params| "/#{params[:tag]}"}
然而,这是多元化这个词。
Input url: www.fubar.com/search/work
Becomes: www.fubar.com/works
造成这种情况的原因是什么以及如何阻止它复制标签?
可能相关:我们需要使用/ *标签而不是/:标签,因为我们有时会有一个标签列表。即www.fubar.com/work/web/video
答案 0 :(得分:1)
清除缓存后,一切正常。浏览器会记住301重定向(我忘记了这一点,并且显然是在保留以前的重定向服务。
match '/search/*tag' => redirect { |params| "/#{params[:tag]}" }
match '/*tag' => 'search#search'
答案 1 :(得分:0)
我所能推荐的是在块内填充Rails.logger.debug {params.inspect}以重定向。这至少可以让你开始调试它。当您离开快乐路径时,Rails路由可能会变得棘手和脆弱,并且知道问题是否在识别中(即*标签的匹配是多元化的)还是在路由中(重定向的结果是多元化的)将是第一个看的地方。