2011-09-28 15 views
9

मैंने अपने हेरोकू ऐप पर कस्टम डोमेन को एक नए में बदल दिया। अब मैं एक नया हेरोकू ऐप तैयार करूंगा जो केवल पहला ऐप पर रीडायरेक्ट करना होगा।पुराने डोमेन से नए (एसईओ दोस्ताना) पर रीडायरेक्ट

मैं गूगल वेबमास्टर्स में पढ़ा है कि मैं एक 301 करना चाहिए इस तरह अनुप्रेषित:

http://old.com/anypath/123 

to 

http://new.com/anypath/123 

मैं इसे कैसे रेल में क्या करते हो?

उत्तर

25

एक में रखें इस 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

लेकिन मैं केवल सभी अनुरोधों को पुनर्निर्देशित कैसे करूं, न केवल "http://old.com/anypath/123 "? –

+1

@ मार्टिन पेट्रोव, मैंने यह दिखाने के लिए अपना जवाब अपडेट किया कि सभी अनुरोध कैसे करें। –

+0

धन्यवाद, यह आसान दिखता है। –

5

अपने नियंत्रक कार्रवाई में:

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

हालांकि, Heroku क्या एक slightly better option हो सकता है के लिए आप अपने देव केंद्र में दर्ज है:

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

धन्यवाद। एक सवाल - क्या यह सब कुछ नए डोमेन की जड़ पर रीडायरेक्ट करेगा, या यह नए डोमेन के सटीक पृष्ठ से मेल खाता है? –

+0

अपडेट किया गया। हालांकि बेन ने मुझे मार दिया। –

+0

भी आपको धन्यवाद। आपको जवाब देने में सक्षम न होने के लिए खेद है। –

संबंधित मुद्दे