Ruby on Rails路由,你如何强制更改子域/域

Min*_*ure 2 subdomain dns redirect routing ruby-on-rails

我的rails应用程序上有几个子域,主域也有.

假设我有一个这样的登录路线:

 match "login", :controller => "user_sessions", :action => "new"
Run Code Online (Sandbox Code Playgroud)

现在可以在所有域和子域上访问此路由,例如:

porkjerkyicedcream.com/login
Run Code Online (Sandbox Code Playgroud)

和...

admin.porkjerkyicedcream.com/login
Run Code Online (Sandbox Code Playgroud)

我的问题是如何强制重定向删除子域(或添加它).所以,如果有人访问/登录admin.porkjerkyicedcream.com/login他们将被重定向到主域(反之亦然)?

干杯!

编辑:

  1. 我不一定需要路由中的解决方案.

  2. 我想避免在应用程序本身中指定和域名,因此它可以在很多不同的域上运行很多地方(比如不同的开发域)

Pan*_*kos 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