0

padrino文档让您知道如何在控制器的上下文中执行前过滤器,但我正在尝试执行全局过滤器。

我要解决的问题是我的域名应该转发到www。版本,但 Godaddy 没有正确执行。所以现在我想在我的代码中手动重定向 - 因此是全局的前置过滤器。

或者我应该看“中间件”吗?

4

3 回答 3

0

尝试使用 rack-rewrite gem

在你的 config.ru 添加类似

require 'rack/rewrite'
use Rack::Rewrite do
r301 %r{.*}, 'http://www.your-domain.com$&',
  :if => Proc.new { |rack_env| rack_env['SERVER_NAME'] != 'www.your-domain.com' }
end

不要忘记将 gem 'rack-rewrite' 包含到您的 Gemfile 中。

于 2012-09-19T04:53:38.507 回答
0

谷歌的第一个结果http://logbook.route19.com/post/9018495987/sinatra-redirect-www-to-non-www

只需与该链接相反即可。尝试这样的事情:

before do
  redirect "www.#{request.url}" unless request.host =~ /^www/
end
于 2013-12-20T13:41:33.957 回答
-1

我已将全局前置过滤器添加到 app.rb。不确定这是否是正确的方法,但它的工作原理与在我的控制器中添加之前的过滤器相同。

在您的 app.rb 文件中

before do
  # Code goes here
end
于 2013-12-05T21:48:24.120 回答