我有一个客户想将他的 Rails 应用迁移到 Heroku。但是该客户还有一个与他的域关联的博客,该博客在 WordPress 上运行。目前,WordPress 博客与 Rails 应用一起顺利运行,但是一旦我们迁移到 Heroku,这显然将无法实现。
该应用程序的网址如下http://我的域名.com,博客的网址如下http://我的域名/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)网站放在子域上,并使用某种重写规则,这样它看起来就不是子域了。
这两种方法是否更可取,或者是否有其他我所忽略的更简单的方法?
答案1
知道这只是权宜之计,我会考虑做一些类似 Apache 反向代理的事情 - 传回 Heroku。Heroku 上的应用程序应该有一个像“yourapp.heroku.com”这样的名称,你可以毫无问题地将流量发送到该应用程序。
看一眼本文档用于指针。
答案2
我个人会为 /blog 设置 301 重写,并将其发送到 blog.domain.com 等子域。这为决定在哪个服务器上运行博客提供了更大的灵活性,比如说,将来客户想要使用 tumblr 或 Wordpress.com。此外,由于它是 301 重定向,因此任何现有链接仍将有效,SEO 不会受到影响。
如果他们确实希望将其设为子文件夹,您可以按照 Michael 的建议操作,前提是您当前的主机/设置支持 mod_proxy。或者您可以像这样设置重写规则(我们的托管服务客户正在使用类似的东西)
RewriteEngine on
RewriteBase /
RewriteRule ^blog(.*) - [L]
RewriteRule ^(.*)$ http://yourapp.heroku.com/$1 [NC,R=302]