在Rails for Heroku中将URL从子目录重写到子域

我试图重写:

mysite.com/blogblog.mysite.com

要清楚:我只希望用户看到mysite.com/blog 。这里的博客实际上是一个单独托管的WordPress站点,位于blog.mysite.com。 而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

我试图在Rails中而不是在Web服务器中这样做的原因是因为我使用Heroku进行托管,我相信在Heroku上不能配置这种类型的重写。

所以我的问题是,我怎样才能实现这个重写?

ps我看到另一篇文章提出使用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应用程序资产目录中的字体(而不是在我的Wordpress主题中)来解决此问题。


这听起来像你的博客和你的网站托管在不同的地方。

如果您想要提供相同的导航页面,但是来自其他网址,则重写仅适用。 它不会在不同的主机之间工作:https://github.com/jtrupiano/rack-rewrite#rewrite

最好的解决方案是将用户重定向到一个子域。

其他一些不太理想的选择:

  • 在您的Rails应用程序中使用您的博客的iFrame(这使得它很难导航和书签)
  • 使用诸如机架反向代理之类的东西从您的Rails应用中发布您的博客(这对用户来说会很慢,并会减慢您网站的其他部分)。
  • Rails页面加载后通过JavaScript加载你的博客(SEO不好,可能很难导航)
  • 所以,我建议只使用子域名。

    链接地址: http://www.djcxy.com/p/60103.html

    上一篇: Rewrite URL from Subdirectory to Subdomain in Rails for Heroku

    下一篇: Heroku Rails app integrated a Bluehost Wordpress site