I'm trying to rewrite:
mysite.com/blog to blog.mysite.com
To be clear: I only want the user to see mysite.com/blog .Where the blog is actually a separately hosted wordpress site at blog.mysite.com. And mysite.com is a Rails app.
I have attempted to use rack-rewrite to achieve this and I can make it work with a 301 redirect, but not with a rewrite.
config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
#r301 '/blog', 'http://blog.mysite.com' #works
rewrite '/blog', 'http://blog.mysite.com' #fails
end
The reason I am trying to do this in Rails and not in the webserver is because I am using Heroku for hosting and I believe it is not possible to configure this type of rewrite on Heroku.
So my question is simply, how can I achieve this rewrite?
p.s. I saw another post suggesting the use of rack-reverse-proxy but this gem seems quite old and doesn't seem to have had much development. Which makes me nervous of using it.
In the absence of an alternative solution, I set aside my reservations and used the rack-reverse-proxy gem. As suggested in some other posts (that SO doesn't let me link to here).
It's working fine for me (Ruby 1.9.3, Rails 3.2.12).
My code is:
use Rack::ReverseProxy do
reverse_proxy /^\/blog(\/.*)$/, 'http://blog.example.com$1', opts={:preserve_host => true} #works
end
At the bottom of the config.ru file.
Note: In Wordpress I also needed to change the Site URL in Settings > General. I changed it to: http://example.com/blog but I kept the .htaccess file unchanged.
A final point: all my CSS and JS were referenced OK, but my local fonts weren't. I solved this by referencing the fonts in the assets directory of my rails app (as opposed to in my Wordpress theme).