路线:
match '/' => 'site_admin/admin#index'
resources :link_pages
resources :services
resource :user_session
resource :account, :controller => "users"
resources :password_resets
resources :users
resources :addresses
resources :info
match "/home", :to => 'info#home'
match "/register", :to => 'users#new'
root :to => 'info#home'
match ':controller(/:action(/:id(.:format)))'
所以当我到admin.lvh.me:3000 /它进入site_admin / admin #index ...这很棒...... 但是当我取下子域名时,只需要lvh.me:3000 /它就会走同一条路线....
如何让管理员留在原地。没有子域可以进入我的根页面,就像我的路径文件一样?
答案 0 :(得分:0)
根本不确定子域如何影响到这一点。也许你将子域名与路由命名空间混淆(http://edgeguides.rubyonrails.org/routing.html#controller-namespaces-and-routing)?
match '/' => 'site_admin/admin#index'
正在选择
root :to => 'info#home'
因为它首先在routes文件中定义。他们表面上看是一样的。
答案 1 :(得分:0)
路由按顺序解析,因此当您从任何域请求/首先找到“匹配”/“...”并将您发送到指定页面。您的子域根本不会发挥作用。您可以使用基于请求的约束来基于子域进行路由:
http://guides.rubyonrails.org/routing.html#request-based-constraints
答案 2 :(得分:0)
是的@Cory是对的。以上两个语句类似,每次都考虑第一个定义的路由。如果您将管理路由更改为
match '/admin' => 'site_admin/admin#index'
那么它确实有意义......说什么?
或者,使用以下代码,您可以有条件地确定您的网址:
request.subdomains(0).first
会为您提供子域值 - admin或空白。但是它将仅转到在route.rb文件中首先定义的任何一个控制器动作。
然后从使用子域的操作开始,您可以决定将其重定向到管理面板或主页...