2011-09-28 9 views
9

Zmieniłem domenę niestandardową w mojej aplikacji Heroku na nową. Teraz utworzę nową aplikację Heroku, której jedynym celem będzie przekierowanie do pierwszej aplikacji.Przekierowanie ze starej domeny na nową (SEO friendly)

czytałem w Google webmasterów, że należy zrobić przekierowanie 301 tak:

http://old.com/anypath/123 

to 

http://new.com/anypath/123 

Jak zrobić to w Rails?

Odpowiedz

25

umieścić to w sposób przed filtrem w 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

Ale jak przekierować wszystkie żądania, nie tylko "http://old.com/anypath/123 "? –

+1

@MartinPetrov, zaktualizowałem swoją odpowiedź, aby pokazać, jak wykonać wszystkie żądania. –

+0

Dziękuję, to wygląda na proste. –

5

W Twojej działania kontrolera:

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

Jednak Heroku ma co może być slightly better option Ci udokumentowane w ich centrum 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

Dzięki. Jedno pytanie - czy to przekieruje wszystko do katalogu głównego nowej domeny, czy dopasuje dokładną stronę w nowej domenie? –

+0

Zaktualizowany. Ben mnie jednak pobił. –

+0

Dziękuję też. Przepraszam, że nie mogę też zaznaczyć Twojej odpowiedzi. –

Powiązane problemy