我有一个客户想要将他的Rails应用程序迁移到Heroku。但是,客户端还有一个与他的域相关联的博客,该博客在WordPress上运行。目前,WordPress博客与Rails应用程序一起快乐地运行,但是一旦我们迁移到Heroku,这显然是不可能的。
该应用的网址类似于http://mydomain.com,该博客的网址类似于http://mydomain/blog。
我意识到最好的长期解决方案是以像Toto或Jekyll这样的Rails格式重做博客。但是从短期来看,继续托管WP博客的最佳方式是什么(或者某个地方),但是使用Heroku来运行应用程序?客户端不希望博客位于子域,而是因为SEO原因而留在mydomain / blog,并且因为博客有流量。我有两个想法:
在旧(非Heroku)服务器上使用rack_rewrite或refraction(或只是常规的旧301和Apache mod_rewrite)将主URL从旧站点重定向到Heroku。在这种情况下,我可以让Wordpress博客快乐地运行。我认为??如果我这样做,是否有理由选择其中一个选项(rack_rewrite,refraction或mod_rewrite)?
将DNS信息切换为指向Heroku网站,然后使用301重定向从博客到旧网站。但是,我必须在子域上获取旧的(非Heroku)站点并使用某种重写规则,因此看起来它不是子域。
这些方法中的任何一种都是优选的,还是有其他方法可以让我更容易丢失?
答案 0 :(得分:1)
唯一可行的长期/可扩展解决方案是将博客永久托管在子域或不同域上,并将重定向从mydomain.com/blog添加到新位置(即:blog.mydomain.com)。
你需要在mydomain.com上运行像Apache / nginx这样的前端的单个服务器来提供像Rails和Wordpress这样的混合后端,而这在Heroku上是不可能的。
可悲的是,这是您需要深入了解顾问并对您的客户严格控制技术限制的地方。
为什么您的客户要迁移到Heroku?是否有更大的目标可以通过不同的托管实现,您可以控制前端并可以混合使用不同的后端?
答案 1 :(得分:1)
另一个解决方案是将heroku设置为http://app.example.com,将Wordpress设置为http://example.com。您将Wordpress登陆页面放在根目录中,博客放在/ blog上。当用户点击登录页面上的“登录”或“注册”时,它们会链接到heroku-app。
这在SEO方面是最佳的,但需要一些DNS知识。
答案 2 :(得分:1)
请参阅https://github.com/jaswope/rack-reverse-proxy
根据文档安装gem并设置应用后,您的./config.ru
文件会包含以下内容:
use Rack::ReverseProxy do
reverse_proxy(/^\/blog(\/.*)$/,
'http://<app-name>.herokuapp.com$1',
opts = {:preserve_host => true})
end