在Rails路由中强制执行尾部斜杠

时间:2013-04-25 15:20:44

标签: ruby-on-rails relative-path rails-routing trailing-slash

使用{:trailing_slash =>在链接中添加尾部斜杠非常简单true},但这并不能说明用户是否输入了非斜线网址。有没有办法通过路由器中的重定向强制执行尾部斜杠?

get "/:controller/:id" => redirect{|params| "/#{params[:controller]}/#{params[:id]}/" }

以上导致循环循环。

为什么?

上的“./subclass”的相对链接
/parent/1

大不相同
/parent/1/

2 个答案:

答案 0 :(得分:8)

在config / application.rb文件中,添加

config.action_controller.default_url_options = { :trailing_slash => true }

在Application类

答案 1 :(得分:2)

经过测试并可以在Rails 6+中工作

放入您的config/application.rb文件:

config.action_controller.default_url_options = { :trailing_slash => true }

注意::这不会自动重定向任何网址,而不会在后面加上斜杠。它只是在应用程序内任何链接的末尾附加“ /”。 为了强制并301重定向所有不带斜杠的URL到末尾带有斜杠的URL,您可能要使用gem rack-rewrite。