2011-04-18 69 views
0

我有一個Rails應用程序,爲用戶提供他們的網站的子域名。然後,用戶可以將自己的域名指向該子域名,使其看起來像自己的網站。將301個子域名重定向到用戶自己的URL在軌道3

當我用戶輸入一個域名到我的應用程序時,我需要重定向任何未來的請求到那裏我的應用程序的子域URL到他們自己的域,也傳遞路徑,例如company_site.hosted_site.com/pages/about_us重定向到www .company_site.com /頁/ about_us。

有沒有人知道如何在軌道3中做到這一點?

我不能這樣使用Apache規則,因爲需要點擊數據庫來獲取重定向url,也不想改變每個用戶/子域的conf文件。

任何人都這樣做? ssems可能最適合在機架中間件中完成?有任何想法嗎?

非常感謝 裏克

回答

2

一個簡單的方法就是做這個的before_filter塊ApplicationController中,使所有操作都受到它的影響:您存儲的

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 
+0

謝謝我需要的 – rick 2011-04-18 14:44:20