2009-10-12 102 views
0

大約3個星期前,我創建了一個由Heroku託管的新網站,之後我決定改變它的域名。我試圖找出如何做一個網站廣泛重定向和我想的東西就像在我的應用程序控制器會(過濾器之前添加):網站全部重定向

def new_domain 
    redirect_to url_for(:controller => params[:controller], :action => params[:action], :id => params[:id], :host => 'http://newdomain.com'), :status => 301 
end 

這顯然不是對所有的行動和工作如果url傳遞額外的參數將會失敗。我想知道是否有更通用的東西我可以做,所以我不必有一堆if else子句?

回答

1

試試這個。

params[:host] = 'http://newdomain.com' 
redirect_to url_for(params), :status => 301 

「url_for」採取的哈希,並通過改變PARAMS的「主機」,它應該與PARAMS其餘部分的新主機。

+0

不用擔心,謝謝! – LDK 2009-10-12 17:50:00

+0

這看起來更乾淨。我想我應該把它放在一個除非聲明中,以確保我不會重定向人員,或者更重要的是Google機器人,轉到新域... – LDK 2009-10-12 17:55:46

1

由於Rails的最新版本現在支持Rack接口,並且可以包含Rack middleware,因此可能需要查看Canonical Host。我沒有使用它自己,但乍一看這聽起來像它可能是很好的解決方案。

+0

很酷,謝謝你的提示。 – LDK 2009-10-15 02:44:23