1

我有一个由子域驱动的 Rails 3.2 应用程序:

company1.myapp.com
companyn.myapp.com

有些人正在尝试这样做:

www.companyn.myapp.com

这会产生错误。如果它是 www,我怎样才能去掉那个领先的子域?

我的应用程序控制器中有这个:

def redirect_to_subdomain_page
  subdomain = request.subdomain
  subdomain = "xyz" if subdomain.blank? or subdomain=="www"
  render "#{subdomain}_#{params[:action]}"
end

但如果他们去www.companyn.myapp.com我想将他们重定向到 just companyn.myapp.com。我想重定向它们,以便实际的 URL 发生变化。

4

2 回答 2

1

request.subdomains应该返回所有子域的数组,以便您可以执行以下操作:

def redirect_to_subdomain_page
  subdomains = request.subdomains
  if subdomains.length <= 1
    subdomain = subdomains.first
    subdomain = "xyz" if subdomain.blank? or subdomain=="www"
    render "#{subdomain}_#{params[:action]}"
  else
    redirect_to "http://companyn.myapp.com/#{request.fullpath}"
  end
end
于 2013-05-09T20:17:35.903 回答
1

你可以通过在接触你的应用程序之前让你的 NGINX 或 Apache 服务器重定向到非 www 版本来减轻你的 Rails 应用程序的负担。

于 2013-05-10T17:37:06.540 回答