阻止rails子域触发*所有*

时间:2014-09-27 00:57:06

标签: ruby-on-rails ruby ruby-on-rails-4 routes subdomain

我的网站有一些页面,例如example.com/about

我还在api.example.com为我的应用创建了一个API。

# API                                                           
namespace :api, path: '/', constraints: { subdomain: 'api' } do 
  scope format: true, constraints: { format: 'json' } do        
    get 'posts/latest', to: 'posts#latest'                      
    get 'posts/:id',    to: 'posts#show'                        
  end                                                           
end 

# Pages
get 'about'    to: 'pages#about'
get 'contact', to: 'pages#contact'

问题是,现在我的/about页面正在处理我的api子域。

api.example.com/about绝对不应该那样,并且应该触发404。

我真正想做的是将我剩下的所有路线文件包裹在constraints: { subdomain: nil }中,但我想知道" Rails Way"这样做。

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我真正想做的是将我剩下的所有路线文件包裹在constraints: { subdomain: nil }中,但我想知道" Rails Way"这样做。

Rails方式。

典型的Rails应用程序只会监听套接字而不关心域。通常,您的Web服务器将处理域/ IP地址与内部应用程序套接字(例如Apache VirtualHost)之间的映射。

当Web服务器将HTTP请求传递给应用程序时,Rails只对(子)域的所有内容感兴趣,除非另有配置。