Rails 301 从 /de 重定向到 /de/
Rails 301 Redirection from /de to /de/
如何从
进行重定向
http://bla.com/de to 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?('/')}
希望对您有所帮助!!
如何从
进行重定向http://bla.com/de to 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?('/')}
希望对您有所帮助!!