将静态页面部署到域根目录和rails应用程序到子域

时间:2014-03-19 09:01:08

标签: ruby-on-rails heroku deployment routing subdomain

我正在关注Michael Hartl的Rails教程并部署到Heroku。

我拥有对每个网络访问者公开的静态网页以及需要用户登录才能查看的动态和“受保护”网页。目前,所有网页都部署到网站的根目录:example.com/static-pageexample.com/users/1/

我的目标

  • 将静态页面部署到根目录,例如example.com/static-page
  • 将rails的页面部署到子域,例如app.example.com/users/1

我认为解决方案涉及更改路径文件。是否有任何教程或视频解释如何操作?我是Rails的新手。

我的路线档案:

Dcid::Application.routes.draw do
  resources :users
  resources :sessions, only: [:new, :create, :destroy]

  root 'static_pages#home'

  match '/home',    to: 'static_pages#home',    via: 'get'
  match '/about',   to: 'static_pages#about',   via: 'get'

  match '/signup',  to: 'users#new',            via: 'get'
  match '/signin',  to: 'sessions#new',         via: 'get'
  match '/signout', to: 'sessions#destroy',     via: 'delete'

2 个答案:

答案 0 :(得分:1)

您可以让控制器为您的网页提供服务,或者只是将您的HTML文件放在public中,并将其视为资产。

在任何一种情况下,如果它们都是静态的,您可能需要大量缓存或将CDN放在所有内容之前。

答案 1 :(得分:1)

你会想要这样的东西:

  #config/routes.rb
  root 'static_pages#home'

  #Subdomain
  constraints subdomain: 'app' do
     resources :users
  end

  #Pages
  pages = %w(home about)
  for page in pages do
     get "/#{page}", to: "static_pages##{page}"
  end

  #Resources
  resources :users do
     get :new, as: :collection
  end

  resources :sessions, only: [:new, :create, :destroy] do
     get :signin, action: :new, as: :collection
     delete :signout, to: :destroy, as: :collection
  end

这将创建您需要的路线。但是,除非使用custom domain

,否则您将无法在Heroku上使用子域