はじめに
こんにちは!
こちらの記事では、RubyOnRailsでサブドメインに対応させる方法をご紹介したいと思います^^
サブドメインを設定することによって、localhost:3000から脱却し、mysite-onaga.comや、one.mysite-onaga.com、two.mysite-onaga.com、three.mysite-onaga.comなど好きなドメインを設定できます!
しかし、こちらのドメインはあくまでローカル(自分のPCだけ)だけで使えるものになりますのでご注意ください。。サイトを公開するには、お名前.comさんなどでドメインを取得して設定する必要があり、こちらはご紹介しておりません。
前提:Rails環境構築済み, Mac
URLをlocalhost:3000以外に変更する
はじめにPCの設定そのものにlocalhost:3000にサブドメインを設定してあげます。設定済みの方は飛ばしていただいて大丈夫です。
Macの場合、ターミナルを開いて、vi /etc/hosts
で設定ファイルを開きます。人によっては書き込み権限がなく、sudo vi /etc/hosts
にする必要があるかもしれません。
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
127.0.0.1 mysite-onaga.com one.mysite-onaga.com
255.255.255.255 broadcasthost
::1 localhost
localhost:3000はIPアドレスにすると、127.0.0.1
となります。
ですので、hostファイルの127.0.0.1
の行に自分で設定したいサブドメインを記述します。
Railsでrouteを設定する
前章の設定で、URLをmysite-onaga.comなどでアクセスすることで、localhost:3000で開いていたページを開くことができるようになりました。しかし、今回設定したサブドメインは3つあります。せっかくなので、サブドメイン別にrouteを設定していこうと思います。
例えば、get 'home/zero'
はmysite-onaga.comでしかアクセスできないように、get 'home/one'
はone.mysite-onaga.comでしかアクセスできないようにすることができます。
やっとこRailsのroutes.rbを編集していきます!
### routes.rb ###
# mysite-onaga.com
constraints subdomain: '' do
get 'home/zero'
end
# one.mysite-onaga.com
constraints subdomain: 'one' do
get 'home/one'
end
以上の設定により、http://mysite-onaga.com/home/zero
とhttp://one.mysite-onaga.com/home/one
にアクセスできるようになったかと思います^^
rails routes
コマンドを打つとパスがちゃんと設定されているか確認できると思いますので、試してみてください。
#終わりに
以上がRailsでサブドメインに対応させる方法になります!