2009-10-12 105 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