ruby-on-rails - Rails 301 从 /de 重定向到 /de/
问题描述
我如何进行重定向
http://bla.com/de 到 http://bla.com/de/
我试过
get '/de', to: redirect('de/', status: 301)
get "/de" => redirect("/de/")
但我有一个错误错误:重定向太多
我的错误在哪里?
[Anonymous user] Started GET "/de" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
[Anonymous user] Started GET "/de/" for 127.0.0.1 at 2018-12-28 11:03:15 +0200
解决方案
首先,rails 不区分正斜杠或尾部斜杠。这就是为什么您收到太多重定向错误的原因。
实现此目的的一种方法是在 ApplicationController 中定义一个方法,然后将其用作过滤器来重定向您的请求
def force_trailing_slash
redirect_to request.original_url + '/' unless request.original_url.match(/\/$/)
end
或者,您可以使用 rack-rewrite 在您的 Rails 应用程序中的机架级别执行相同的任务。
https://github.com/jtrupiano/rack-rewrite
config.middleware.insert_before 0, Rack::Rewrite do
r301 '/de', '/de/'
end
另一种可能有帮助的方法是:
get '/de', :to => redirect('de/'), :constraints => lambda {|r| !r.original_fullpath.end_with?('/')}
希望这可以帮助!!
推荐阅读
- reactjs - 如何向 React-query 中的现有数据添加新数据?
- python - 我的“if”语句没有将我的“while”循环更改为 False
- c++ - 打印带有随机数的二维数组时得到奇怪的输出,特别是在第 6 行和第 7 行
- tensorflow - CUDA 和 cuDNN 在 Windows 上的安装问题
- rust - 生锈中的高效 SIMD 点积
- python - Python错误:''ModuleNotFoundError:没有名为'email.Utils'的模块'
- python - 如何在屏幕上注册键盘上按下的箭头?
- ios - 无法协同设计... errSecInternalComponent
- java - 如何修改另一个类中的私有静态最终数组的索引
- java - 如何在mysql注解springboot @@ JsonFormat中只保存分秒小时