4

我很确定这个问题的答案是“不可能的”,但我想我会最后一次检查:

我正在将一些 Rails 应用程序迁移到 Heroku。它们现在的组织方式,从 URL 角度来看,是:

到目前为止,我读到的所有内容都表明这在 Heroku 上是不可能的:每个应用程序都必须有自己的子域(例如 site1.example.com、site2.example.com)。

我的客户不想更改 URL 结构(实际上可能有一些论据;我已经阅读了几个来源说路径与子域更适合 SEO)。

我是否正确,这在 Heroku 上是不可能的

4

3 回答 3

3

Heroku 和 Rails 使用 Rack Reverse Proxy 可以做到这一点。我目前正在分别在 /blog 和 /kb 运行 Wordpress 博客和知识库。出于 SEO 的目的,我不希望它们出现在子域中。

导轨配置

添加到 Gemfile:

gem "rack-reverse-proxy", :require => "rack/reverse_proxy"

现在我们希望 /blog 和 /blog/ 从 Rails 应用程序定向到 Wordpress 实例。

在运行应用程序之前将其添加到您的 config.ru 中:

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

在 config/routes.rb 添加一个路由:

match "/blog" => redirect("/blog/"), via: :all

原始参考:http ://rywalker.com/setting-up-a-wordpress-blog-on-heroku-as-a-subdirectory-of-a-rails-app-also-hosted-on-heroku

于 2014-05-14T17:25:02.643 回答
2

我可能迟到了,但可能。我们在 Pilot 上的做法的简短版本:

我们有一个额外的实例运行 HAProxy。它负责根据 URL 将请求路由到相应的 Heroku 应用程序。✌️

于 2015-12-18T13:49:34.207 回答
0

你最好的选择是将你的 Rails 应用程序变成 Rails 引擎:

http://pivotallabs.com/migrating-from-a-single-rails-app-to-a-suite-of-rails-engines/

然后使用您描述的 URL 安装每个引擎。

当然,如果您的应用程序非常庞大且复杂,这可能会很棘手。

于 2013-10-01T14:49:41.017 回答