我的rails应用程序上有几个子域,主域也有。
假设我有这样的登录路线:
match "login", :controller => "user_sessions", :action => "new"
现在可以在所有域和子域上访问此路由,例如:
porkjerkyicedcream.com/login
和...
admin.porkjerkyicedcream.com/login
我的问题是如何强制重定向删除子域(或添加子域)。因此,如果有人在 admin.porkjerkyicedcream.com/login 上访问 / login ,则会将其重定向到主域(反之亦然)?
干杯!
编辑:
我不一定需要路由中的解决方案。
我想避免在应用程序本身中指定和域名,因此可以在很多不同的域(例如不同的开发域)上运行很多地方
答案 0 :(得分:7)
您可以在控制器中使用before_filter,然后适当地重定向。例如:
class UserSessionsController < ApplicationController before_filter :ensure_proper_subdomain, :only => "new" def ensure_proper_subdomain if request.host_with_port != 'admin.porkjerkyicedcream' redirect_to params.merge({host: 'admin.porkjerkyicedcream'}) end end end
答案 1 :(得分:0)
我认为这不能在路由文件中完成。但无论如何,您始终可以创建a custom filter并根据当前域/路径重定向用户。
答案 2 :(得分:0)
如果你添加:
,我认为你可以在application_controller中管理它 def default_url_options(options={})
#add whatever logic you want
{ :host => "example.com" }
end