ruby-on-rails - Ruby on Rails:301 将变量下划线 URL 重定向到连字符 URL
问题描述
这个问题类似但不一样。
/test/foo_bar
假设像和的路线/test/foo_bar/8
。
routes.rb
有如下路线:
get "/test/:id1/:id2", to: "test#super"
get "/test/:id1", to: "test#duper"
如果目标是 301 将下划线 URL 重定向到连字符版本(例如/test/foo_bar
-> /test/foo-bar
),是否有 Rails 方式以编程方式执行此操作?或者是否需要为旧的下划线路由手动创建 301 路由?
这适用于 Rails 6.x。
解决方案
您可以尝试这样的事情(未经测试):
get '/test/:id1', to: redirect { |path_params, req| "/test/#{path_params[:id1].dasherize}" }
get '/test/:id1/:id2', to: redirect { |path_params, req| "/test/#{path_params[:id1].dasherize}/#{path_params[:id2]}" }
我不喜欢这种方法:感觉很老套……但它可能对你有用。
推荐阅读
- python-3.x - 难以决定继承什么以及如何继承
- reactjs - 如何在自定义类组件的样式中使用主题
- javascript - 如何使用解析服务器调用函数
- reactjs - TypeError:无法读取未定义的属性“状态” - 函数
- javascript - 如何使 eonasdan datetimepicker css 正常工作?
- python - 如何将 validate_email 包包含到 django UserCreationForm 中?
- javascript - 使用 puppeteer 循环遍历列表并单击按钮
- java - 如何重新排列数组以使空值占据数组的开头?
- outlook - Outlook Rest API 访问被拒绝。检查凭据并重试
- c# - 为什么我在 ASP.NET 4.5 中的 Web ASP 控制器响应多个控制器的错误?