2

私は書き直そうとしています:

mysite.com/blogからblog.mysite.comへ

明確にするために: ユーザーにmysite.com/blogのみを表示したいのですが、ブログは実際には blog.mysite.com で個別にホストされている wordpress サイトです。mysite.com は Rails アプリです。

これを達成するためにラック書き換えを使用しようとしましたが、301 リダイレクトで動作させることができますが、書き換えでは動作しません。

config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
  #r301   '/blog',  'http://blog.mysite.com' #works
  rewrite   '/blog',  'http://blog.mysite.com' #fails
end

これを Web サーバーではなく Rails で実行しようとしている理由は、ホスティングに Heroku を使用しており、Heroku でこのタイプの書き換えを構成することはできないと考えているためです。

だから私の質問は、どうすればこの書き直しを達成できますか?

ps Rack-reverse-proxyの使用を提案する別の投稿を見ましたが、この gem はかなり古く、あまり開発されていないようです。それは私がそれを使うのを緊張させます。

4

2 に答える 2

2

代替ソリューションがないため、私は予約を脇に置き、rack-reverse-proxy gem を使用しました。他のいくつかの投稿で示唆されているように (SO ではここにリンクできません)。

私にとっては問題なく動作しています(Ruby 1.9.3、Rails 3.2.12)。

私のコードは次のとおりです。

use Rack::ReverseProxy do
   reverse_proxy /^\/blog(\/.*)$/, 'http://blog.example.com$1', opts={:preserve_host => true} #works
end

config.ru ファイルの下部にあります。

注: Wordpress では、[設定] > [全般] でサイト URL も変更する必要がありました。http://example.com/blogに変更しましたが、.htaccess ファイルは変更しませんでした。

最後のポイント: CSS と JS はすべて正常に参照されましたが、ローカル フォントは参照されませんでした。Railsアプリのassetsディレクトリにあるフォントを参照することでこれを解決しました(Wordpressのテーマとは対照的に)。

于 2014-09-17T11:06:25.797 に答える
1

あなたのブログとウェブサイトは別の場所でホストされているようです。

書き換えは、同じ Rails ページを別の URL から提供したい場合にのみ機能します。異なるホスト間では機能しません: https://github.com/jtrupiano/rack-rewrite#rewrite

最善の解決策は、ユーザーがサブドメインにリダイレクトされても問題ないことです。

他のいくつかのあまり理想的でないオプション:

  • Rails アプリでブログの iFrame を使用します (これにより、ナビゲートとブックマークが難しくなります)
  • Rack-reverse-proxy などを使用して、Rails アプリからブログを提供します (これはユーザーにとって遅く、サイトの残りの部分を遅くします)。
  • Rails ページが読み込まれた後、JavaScript を介してブログを読み込みます (SEO は良くなく、おそらくナビゲートするのが難しいでしょう)。

したがって、サブドメインのみを使用することをお勧めします。

于 2014-09-16T10:57:06.110 に答える