0

padrinoのドキュメントでは、コントローラーのコンテキストでbeforeフィルターを実行する方法を説明していますが、私はグローバルフィルターを実行しようとしています。

私が解決しようとしている問題は、私のドメイン名を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

Gemfile に gem 'rack-rewrite' を含めることを忘れないでください。

于 2012-09-19T04:53:38.507 に答える
0

Google 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 に追加しました。これが正しい方法かどうかはわかりませんが、コントローラーに before フィルターを追加するのと同じように機能します。

app.rb ファイル内

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