2014-01-19 56 views
2

我有一个路线,即mysite.com:3000/new_route,我想忽略,这是可能通过轨道,而不是服务器端?如何忽略导轨中的路线?

我读过这可以通过Apache完成,但是,我的应用程序在Heroku上运行,并且该类型的控件无法访问我。因此,我正在寻找另一种通过Rails来实现这一点的方法。

感谢

更新

我使用王菲有我的应用程序实时通知,对localhostfayeport 9292运行 - localhost:9292/faye,一切美好的发展模式,但在生产中应该指向mydomain.com/faye,在生产环境中没有端口号,并且加载faye.js返回error not found

+0

_ignore_是什么意思?你想把它路由到别的地方吗?它应该返回404吗?什么? –

+0

@MichaelBerkowski当我访问mydomain.com/blog时,它不应该由博客控制器或我的应用程序中的任何其他资源处理,/ blog是指向外部应用程序的链接。 – user2821877

+0

更好地说,我使用faye在我的应用程序中有实时通知,没有localhost faye在端口9292上运行 - 'localhost:9292/faye',都在开发模式中很好,但是在生产中应该指向'mydomain.com/ faye',在生产环境中没有端口号,并且加载faye.js返回错误'not found', – user2821877

回答

0

您可以在您的routes.rb文件的顶部将重定向到其他页面。

get '/new_route', redirect: '/' 
+1

这不是一个好的选择,不能解决问题,它带来了无限循环。 – LPing

2

如果你在谈论一个资源路线,你不希望创建:

resources :something, except: :new 

不过,我不能完全肯定,如果这是你的忽略是什么意思。

0

当你问Rails处理路由时,已经太晚了。如果您要求rails来处理路线,它会通过返回404错误或500页错误。

如果您希望路由被另一个应用程序处理,它将需要由您的网络服务器(nginxapache或您正在使用的那一个)拦截。在他们的配置中,您只需将该路由重定向到其他应用程序,并将其他路径重定向到Rails应用程序。

编辑

你有另一种选择,就是你的请求转发到不同的服务器。

您添加像

get 'faye/*query' => 'faye#get' 
post 'faye/*params' => 'faye#post' 

路线然后控制器

require 'faraday' 

class FayeController < ApplicationController 

    APP = 'http://mydomain.com:9292' 

    def get 
    request_page :get 
    end 

    def post 
    request_page :post 
    end 

    private 

    def request_page(method) 
    conn = Faraday.new(:url => APP) 
    query = params.delete(:query) 
    response = conn.send method, query, params 
    render text: response.body.gsub(APP, 'mydomain.com/faye') 
    end 
end 

将使用法拉第加载从其他应用程序的信息。

+0

谢谢,关于如何在heroku上配置这个任何想法? – user2821877

+0

我添加了另一个选项,更适合Heroku –