padrinoのドキュメントでは、コントローラーのコンテキストでbeforeフィルターを実行する方法を説明していますが、私はグローバルフィルターを実行しようとしています。
私が解決しようとしている問題は、私のドメイン名をwwwに転送する必要があるということです。バージョンですが、godaddyが適切に実行していません。そこで、コードを手動でリダイレクトしたいので、グローバルビフォアフィルターを使用します。
または、代わりに「ミドルウェア」を検討する必要がありますか?
padrinoのドキュメントでは、コントローラーのコンテキストでbeforeフィルターを実行する方法を説明していますが、私はグローバルフィルターを実行しようとしています。
私が解決しようとしている問題は、私のドメイン名を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
Gemfile に gem 'rack-rewrite' を含めることを忘れないでください。
Google 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 に追加しました。これが正しい方法かどうかはわかりませんが、コントローラーに before フィルターを追加するのと同じように機能します。
app.rb ファイル内
before do
# Code goes here
end