在Rails for Heroku中将URL从子目录重写到子域
我试图重写:
mysite.com/blog到blog.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
最好的解决方案是将用户重定向到一个子域。
其他一些不太理想的选择:
所以,我建议只使用子域名。
链接地址: http://www.djcxy.com/p/60103.html上一篇: Rewrite URL from Subdirectory to Subdomain in Rails for Heroku