ruby-on-rails - 在 Rails for Heroku 中将 URL 从子目录重写为子域

标签 ruby-on-rails wordpress mod-rewrite heroku rack-rewrite

我正在尝试重写:

mysite.com/blogblog.mysite.com

需要明确的是:我只希望用户看到 mysite.com/blog 。该博客实际上是一个单独托管的 WordPress 网站,位于 blog.mysite.com。 mysite.com 是一个 Rails 应用程序。

我尝试使用 rack-rewrite为了实现这一点,我可以使其与 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 中而不是在网络服务器中执行此操作的原因是因为我使用 Heroku 进行托管,并且我相信不可能在 Heroku 上配置这种类型的重写。

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

附:我看到另一篇文章建议使用 rack-reverse-proxy但这颗 gem 看起来相当古老,似乎没有太多开发。这让我对使用它感到紧张。

最佳答案

在没有替代解决方案的情况下,我放弃了保留并使用了 rack-reverse-proxy gem 。正如其他一些帖子中所建议的(所以不允许我链接到此处)。

它对我来说工作得很好(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 主题中的字体)解决了这个问题。

关于ruby-on-rails - 在 Rails for Heroku 中将 URL 从子目录重写为子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25846186/

相关文章:

ruby-on-rails - 如何检查表中的任何 ActiveRecord 中是否存在字符串?

ruby-on-rails - "Not found. Authentication passthru."错误。设计 Omniauthable 模块不会在另一个引擎中使用 't work when it' s

ruby-on-rails - rails : Is there any way to build dynamic role based authorization in rails?

css - 在 wordpress 菜单后定位 UL 列表

css - Wordpress 不更新 css 行高

apache - .htaccess 被解析和 RewriteRule 指令运行多少次?

.htaccess - htaccess 重写和身份验证冲突

用于 Ruby On Rails 的 MySQL Gem

wordpress - URL 重写不适用于一个 URL

wordpress - 获取 Woocommerce 变体属性