[英]Rewrite URL from Subdirectory to Subdomain in Rails for Heroku
我正在尝试重写:
mysite.com/blog至blog.mysite.com
需要说明的是:我只希望用户看到mysite.com/blog 。该博客实际上是位于blog.mysite.com上的单独托管的wordpress网站。 而且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:我看到另一篇文章建议使用机架反向代理,但是这个宝石看起来很老,而且似乎没有太大的发展。 这让我不敢使用它。
在没有其他解决方案的情况下,我搁置了保留意见,并使用了机架反向代理宝石。 正如其他一些帖子所建议的(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都被引用为OK,但我的本地字体却未被引用。 我通过引用Rails应用程序资产目录中的字体(而不是在Wordpress主题中)来解决此问题。
听起来您的博客和网站托管在不同的地方。
仅当您要提供相同的rails页面但使用不同的URL时,重写才有效。 它不能在不同的主机之间工作: https : //github.com/jtrupiano/rack-rewrite#rewrite
最好的解决方案是将用户重定向到子域即可。
其他一些不太理想的选择:
因此,我建议仅使用子域。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.