2012-05-15 19 views
14

creo que esto debería ser bastante fácil, pero no estoy familiarizado con cómo se hace ...Rieles: redirigen a la ruta actual, pero diferente subdominio

¿Cómo se escribe un filtro antes de que se compruebe si la petición actual es para ciertos subdominios, y si es así redirigirlo a la misma URL pero en un subdominio diferente?

Ie: blog.myapp.com/posts/1 está bien, pero blog.myapp.com/products/123 redirige a www.myapp.com/products/123.

que estaba pensando algo así como ...

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 

¿Cómo se escribe que redirigen?

Respuesta

12

ActionController::Redirecting#redirect_to permite pasar una URL absoluta, por lo que la cosa más fácil de hacer sería pasarlo uno con algo como:

redirect_to request.url.sub('blog', 'www') 
+0

Ah, yo no sabía que existía el método '.sub'! ¡Gracias! – Andrew

+6

¡Doh! El submétodo es simplemente el viejo submétodo de ruby ​​antiguo ... ok así que después de más experimentos esto funciona, pero tengo que usar más de una expresión regular para encargarme de ello. El objeto 'request.url' me da lo suficiente como para descubrir el resto, ¡gracias! – Andrew

+0

Solo espero que nunca tengas www en ningún otro lado en tus URL ... – Qwertie

2

Una opción simple para redirigir a partir subdominio subdominio sería el siguiente redirect_to subdomain: 'www', :controller => 'www', :action => "index"

esto se llamaría en un nombre de dominio, por ejemplo, foo.apple.com luego iría a www.apple.com

Cuestiones relacionadas