I think this should be fairly easy but I'm not familiar with how it's done...
How do you write a before filter that would check if the current request is for certain subdomains, and if so redirect it to the same url but on a different subdomain?
Ie: blog.myapp.com/posts/1
is fine but blog.myapp.com/products/123
redirects to www.myapp.com/products/123
.
I was thinking something like...
class ApplicationController < ActionController::Base
before_filter :ensure_domain
protected
def ensure_domain
if request.subdomain == 'blog' && controller_name != 'posts'
redirect_to # the same url but at the 'www' subdomain...
end
end
end
How do you write that redirect?
ActionController::Redirecting#redirect_to allows you to pass an absolute URL, so the easiest thing to do would be to pass it one with something like:
redirect_to request.url.sub('blog', 'www')
Ah, I didn't know the
.sub
method existed! Thanks!Doh! The sub method is just the plain old ruby sub method... ok so after further experimentation this works but I have to use more of a regex to take care of it. The
request.url
object gives me enough to figure out the rest though, thanks!