1

我正在使用Rails 3.1.1,並且希望將用戶從美國重定向到適當的子域us.site.com(此域名與site.com位於同一臺服務器上)。我知道我可以通過他/她的IP地址本地化一個用戶,但是我怎麼做才能將他/她重定向到正確的子域?有一種技術/創業板來地理定位用戶IP,然後處理重定向?如何根據用戶的當前位置將用戶重定向到子域?

附::也許,出於性能的考慮,我應該使用中間件...

回答

1

https://rubygems.org/gems/rack-geoipcity是我發佈的機架中間件寶石,您可以使用,或者只是在您的控制器中使用GeoIP寶石。

使用rack-geoipcity,您可以查詢它添加的X-header並根據該信息做出決定。例如:

if headers['X_GEOIP_COUNTRY_CODE'] == "IN" 
    redirect "/india" 
end 

雖然我目前沒有使用Rails,所以它可能會稍有不同。

There are plenty to choose from如果你不喜歡使用MaxMind db。

1

的一種方法,我已經在過去使用的愉快是通過DNS 用戶連接到該服務進行地理位置查找;通過這種方式,他們可以自動連接到離他們最近的服務器,您可以獲得便宜且容易的負載平衡以及根據需要從主動使用中移除服務器的能力,並且單個站點可以在不影響其他站點的情況下關閉。

OFTC使用自己寫的oftcdns工具爲用戶提供最近的服務器。在我擔任OFTC網絡的管理員期間,該工具比運行更簡單的基於Bind的DNS服務器有了巨大的改進,該服務器不提供地理位置功能,也無法將服務器帶入和退出輪換。

維基百科使用PowerDNS with a geobackend來提供他們的地理-IP服務。 PowerDNS絕對是測試良好,需求量大的工具。

+0

簡而言之,我希望將用戶重定向到託管在主域相同服務器上的子域。也許你的解決方案是「先進」的我的需求... – Backo 2012-01-05 02:14:44

+0

@sarnold +1,這看起來很有趣。 – iain 2012-01-05 03:21:10

+1

@Iain:它絕對可以解決其他時尚難以解決的問題,但是您的Rack中間件看起來更像適合Backo的_much_。 :) – sarnold 2012-01-05 03:35:07