padrino文档让您知道如何在控制器的上下文中执行前过滤器,但我正在尝试执行全局过滤器。
我要解决的问题是我的域名应该转发到www。版本,但 Godaddy 没有正确执行。所以现在我想在我的代码中手动重定向 - 因此是全局的前置过滤器。
或者我应该看“中间件”吗?
padrino文档让您知道如何在控制器的上下文中执行前过滤器,但我正在尝试执行全局过滤器。
我要解决的问题是我的域名应该转发到www。版本,但 Godaddy 没有正确执行。所以现在我想在我的代码中手动重定向 - 因此是全局的前置过滤器。
或者我应该看“中间件”吗?
尝试使用 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 中。
谷歌的第一个结果http://logbook.route19.com/post/9018495987/sinatra-redirect-www-to-non-www
只需与该链接相反即可。尝试这样的事情:
before do
redirect "www.#{request.url}" unless request.host =~ /^www/
end
我已将全局前置过滤器添加到 app.rb。不确定这是否是正确的方法,但它的工作原理与在我的控制器中添加之前的过滤器相同。
在您的 app.rb 文件中
before do
# Code goes here
end