rails,根据用户的ip地址重写路由

时间:2012-09-30 14:05:41

标签: ruby-on-rails routes

我有一个搜索索引器索引我的应用程序中的特定页面。我们为索引构建的URL是在应用程序的其他页面中提供的内容聚合。索引器应该看到聚合页面,用户应该看到找到的主题的第一页/仪表板。

我想知道如何将(除了搜索索引器之外的所有人)路由(通过routes.rb或before_filter)到主题的信息中心。

例如。聚合页面在这里/ topics / 123-my-topic / searchindex。索引器将该页面作为相关内容返回,因为它具有主题123的所有内容。当用户(不是搜索索引器ip)转到/ topics / 123-my-topic / searchindex时,它们应该被路由到/ topics / 123-my-topic。

基本上,除了已知的IP地址之外,剥离/搜索索引除了每个人的请求的最佳方法是什么?

这可以通过apache中的.htaccess来完成,但我更喜欢将它保留在我的应用程序中,所以如果索引器ip地址发生变化,我就不必修改服务器上的文件。

谢谢

马特

1 个答案:

答案 0 :(得分:0)

before_filter :redirect_users

def searchindex
  # :id => '123-my-topic'
  redirect_users
  # Handle searchindex traffic for the indexer
end

def redirect_users
  unless ip == '127.0.0.1'
    redirect_to :action => :show, :id => :topic_id
  end
end