如何从URL中删除子域?

时间:2013-04-30 16:00:46

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我按照Railscast将子域名添加到Rails应用程序here,并且所有内容都适用于子域名。现在,如果请求的子域不存在,我就无法找到一种在没有子域的情况下链接回根域的方法。

我已尝试将以下内容添加到我的application_controller.rb文件

redirect_to root_path(subdomain: false) if @city_or_state.nil?

其中@city_or_state确定所请求的子域有效的天气。 redirect_to返回到根目录,但不会删除子域。

例如,如果用户尝试转到invalid.domain.com,则会将其重定向到根目录,但不会删除子域。

我正试图让invalid.domain.com重定向到domain.com

2 个答案:

答案 0 :(得分:4)

好的,我明白了。我不得不使用以下内容:redirect_to root_url(:host => request.domain)

当我尝试root_path(:host => request.domain)时,它无效。仅适用于root_url

我找到了Daniel Kehoe here

的一些评论的答案

尝试访问不存在的域时,将从URL中删除无效的子域。

答案 1 :(得分:2)

你可以尝试这种方式,我认为它的工作原理! 在application_controller.rb中,您可以添加before_filter :validate_subdomain 然后将此代码添加到控制器:

private 
def validate_subdomain
   # @city_or_state must be initialized before this 
  if @city_or_state.nil?
   redirect_to request.domain
  end
end