2011-09-28 18 views
9

Ho modificato il dominio personalizzato sulla mia app Heroku su uno nuovo. Ora creerò una nuova app di Heroku che avrà solo lo scopo di reindirizzare alla prima app.Reindirizza dal vecchio dominio a quello nuovo (SEO friendly)

ho letto in Google Webmaster che devo fare un redirect 301 come questo:

http://old.com/anypath/123 

to 

http://new.com/anypath/123 

Come posso fare in Rails?

risposta

25

mettere questo in un prima filtro nel ApplicationControlller:

class ApplicationController 
    before_action :redirect_if_old 

    protected 

    def redirect_if_old 
    if request.host == 'old.com' 
     redirect_to "#{request.protocol}new.com#{request.fullpath}", :status => :moved_permanently 
    end 
    end 
end 
+1

Ma come faccio a reindirizzare tutte le richieste, non solo "http://old.com/anypath/123" ? –

+1

@MartinPetrov, ho aggiornato la mia risposta per mostrare come fare tutte le richieste. –

+0

Grazie, sembra semplice. –

5

Nella vostra azione di controllo:

redirect_to "http://new.com#{request.request_uri}", :status => 301 

Tuttavia, Heroku è quello che potrebbe essere un slightly better option per voi documentato nel loro centro dev:

class ApplicationController 
    before_filter :ensure_domain 

    APP_DOMAIN = 'myapp.mydomain.com' 

    def ensure_domain 
    if request.env['HTTP_HOST'] != APP_DOMAIN 
     # HTTP 301 is a "permanent" redirect 
     redirect_to "http://#{APP_DOMAIN}#{request.request_uri}", :status => 301 
    end 
    end 
end 
+0

Grazie. Una domanda: questo reindirizzerà tutto alla radice del nuovo dominio o corrisponderà alla pagina esatta nel nuovo dominio? –

+0

Aggiornato. Ben mi ha battuto comunque. –

+0

Grazie anche a te. Ci scusiamo per non essere in grado di segnare la tua risposta. –

Problemi correlati