質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

解決済

2回答

2534閲覧

Railsでネイキッドドメイン、非SSL接続をリダイレクトする方法について

ooo

総合スコア22

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

0クリップ

投稿2015/06/04 10:19

現状Railsで作ったサービスを、SSL×ネイキッドドメインのURLで運用しております。
https://example.com
のような形式です

ただ、今回ステージングテスト用にあけた80番がGoogleのクローラーに見つかったようで、
非SSLのURLがインデックスされてしまいました。

SEO評価が落ちると困るため、以下の3パターンのURLについて、
https://example.comに301リダイレクトをかけたいと思っております。
※どうせ制御するのであれば、サブドメインについても一緒に対応しようと思っています。

https://www.example.com
http://example.com
http://www.example.com

現状routes.rb内でconstrainsを使って対応しようとしていたのですが、どうも上手く動かず、
どのように対応するべきかご教授いただければと思い投稿させていただきました。

どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ngyuki

2015/06/04 11:42

その程度のリダイレクトなら Rails ではなくWebサーバ(Apache とか Nginx)でやるほうが良いと思うのですが、Rails の前段に Apache なり Nginx はいないでしょうか?
ooo

2015/06/09 04:43

ご返信遅くなりまして、大変失礼いたしました。 おっしゃる通り、nginxがいます!
guest

回答2

0

ベストアンサー

そのあたりはフロントエンドサーバー側で何とかする問題のような気がします。

Nginxであれば、こんな感じの設定で行けると思います
ちょっとあやふやですが

lang

1server { 2 listen 80; 3 server_name exsample.com; 4 return 301 https://exsample.com$request_uri; 5} 6 7server { 8 listen 443 ssl; 9 ...... 10}

投稿2015/06/04 12:45

rifuch

総合スコア1901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ngyuki

2015/06/05 14:33

example の綴りががが s/exsample/example/
rifuch

2015/06/05 16:12

キャーハズカシー
ooo

2015/06/09 04:44

出張のためご返信が遅れてしまい失礼いたしました。 おっしゃる通りnginxがたっているので、ご提案いただいた方法を試してみます! ご回答ありがとうございました!
guest

0

rifuchさんに回答していただいた通りの記述に加えて、
httpsへのリダイレクトについては、
awsのELBを使っていたので、80番にくるリクエストをec2側の10000番に投げ、
10000番のリクエストをhttpsにリダイレクトするようにしました。
※443をリダイレクトしようとするとリダイレクトループが発生してしまいました。

server {
listen 80;
server_name exsample.com;
return 301 https://exsample.com$request_uri;
}

server {
listen 10000;
server_name _;
rewrite ^(.*)$ https://example.com$1 permanent;
}

投稿2015/06/16 12:02

ooo

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問