我有一个rails应用程序,为用户提供其网站的子域名。然后,用户可以将自己的域指向此子域,使其看起来像他们自己的站点。
当用户在我的应用程序中输入域名时,我需要将我的应用程序中的任何子域URL的任何未来请求重定向到他们自己的域,同时也传递路径,例如company_site.hosted_site.com/pages/about_us重定向到www。 company_site.com/pages/about_us。
有人知道如何在rails 3中执行此操作吗?
我无法使用apache规则来访问数据库以获取重定向网址,也不想更改每个用户/子域的配置文件。
有人这样做过吗? ssems可能最好在机架中间件中完成?任何想法?
非常感谢 瑞克
答案 0 :(得分:2)
一种简单的方法是在ApplicationController的before_filter
块中执行此操作,以便所有操作都受其影响:
before_filter :redirect_to_custom_domain
def redirect_to_custom_domain
if (customer = Customer.find_by_subdomain(request.host))
if (customer.domain?)
# Redirects to the customer's full domain
redirect_to(customer.domain_url)
# Returning false will halt additional processing for this request
return false
end
end
end
客户将是您存储已分配的subdomain
和可选自定义domain
的记录,如果已指定,则会将其重定向到这些记录。
在您的客户记录中,您可能有类似这样的帮助方法:
def Customer < ActiveRecord::Base
def domain_url
"http://#{domain}/"
end
end