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

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

新規登録して質問してみよう
ただいま回答率
85.48%
.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

2259閲覧

さくらのレンタルサーバーでhttpsからのURL正規化について

kaigen

総合スコア12

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

1クリップ

投稿2017/09/05 14:16

さくらのレンタルサーバーでhttpsへのアクセスをhttpに正規化したいと思っています。

httpsへの正規化の情報は沢山あるのですが、
httpへの統一する情報が少ない事と、
さくらの独自変数があったりと、
うまく動作しません。

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule>

HTTP:X-Sakura-Forwarded-Forという変数が必要という事まではわかったのですが、思った通りの動作をしません。

実現したい事は
https://example.comhttp://example.com
に統一です。

さくらレンタルサーバーに詳しい方がおられましたらご教授下さい。

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

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

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

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

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

hotta

2017/09/06 00:19

具体的にはどういう事象になりますか?リダイレクトループ?
kaigen

2017/09/08 08:58

htaccess自体が読まれていないように感じます。
hotta

2017/09/08 10:33

切り分けは簡単です。.htaccess の中コマンドのつづりをわざと間違えて、サービス再起動してエラーにならなければ、読み込まれていません。
guest

回答1

0

ベストアンサー

さくらマネージドサーバーを使用しています。質問に関しての設定はほぼレンタルサーバーと同じなので、SSL導入時の調査に基づいて回答します。(若干違うかもしれませんが。。。違ったらすみません)

http://にリクエストがあった場合、`%{HTTP:X-Sakura-Forwarded-For}`という変数は空になります。https://がリクエストの場合は`%{HTTP:X-Sakura-Forwarded-For}` = クライアントIPアドレスとなります。

プロトコル%{HTTP:X-Sakura-Forwarded-For}変数値
http
httpsクライアントIPアドレス

http://でもhttps://でも80番ポートがサーバーのアクセスポートになります。これは、公式サイトのドキュメントによるとサクラサーバーのSSLは`80番ポートのProxy`として動作しているためらしいです。

さくらサーバーのビジネスプラン以上ではIPベースのSSLが導入可能で本件の問題は関係ありません。レンタルサーバーなどではSNI SSLのみしか対応されていないため、本件の問題はSNI SSL特有の問題ということができます。

有効なSSLを用意しているか否かについては%{HTTP:X-Sakura-Forwarded-For}の変数値には関係ないと思われます。(違うかもしれません)

まとめると、リライト設定は下記のように書けると思います。

apache

1RewriteEngine On 2#RewriteCond %{HTTPS} !=on #たぶんこれは必要ない 3RewriteCond %{HTTP_HOST} ^ドメイン(ie: example.com)$ [NC] 4RewriteCond %{HTTP:X-Sakura-Forwarded-For} !^$ 5RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

http://への統一なので`R=301`としています(何もつけないと302テンポラリーリダイレクトになります)

投稿2017/09/08 08:44

編集2017/09/08 09:24
Tomak

総合スコア1652

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

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

kaigen

2017/09/08 08:57

詳細アンサーありがとうございます。 「さくらのSNI SSLが有効になっていて」という部分。 httpに統一するのにも有料SSLを有効化する必要があるとは思っておらずに、根本的な理解が足りませんでした。有料で導入するのは気が引けるので、私の場合にはさくらでは実現不可能という事だとわかりました。 「https://がリクエストの場合は%{HTTP:X-Sakura-Forwarded-For} = クライアントIPアドレス」 この部分も「SNI SSLが有効」ではじめて利用できる変数だという事がわかりました。 今回は私には実現できませんでしたが、 「RewriteCond %{HTTP:X-Sakura-Forwarded-For} !^$」の否定!が抜けていた事に気付けました。 ご丁寧なご回答ありがとうございました。
Tomak

2017/09/08 09:08

>さくらのSNI SSLが有効になっていて すみません、回答が間違っていました。いろいろ切り貼りしていたらへんなのが残ってしまっていました。(←修正しておきます) %{HTTP:X-Sakura-Forwarded-For}←この変数についてSSLがきちんと有効になっているか(SNI SSL)、いないかが関係あるのかは不明です。間違っているかもしれませんが、私の認識ではプロキシに入ったかを表す変数なので関係ないと思っています。 混乱させてしまい申し訳ありません。
kaigen

2017/09/08 09:22

追記ありがとうございます。 実は頂いたコードで念のため試したのですが、httpsページで転送する事ができませんでした。 (キャッシュなどきちんとデバッグは行えているはずです) プライバシー保護エラーの詳細には、 このサーバーが hogehoge であることを確認できませんでした。このサーバーのセキュリティ証明書は *.sakura.ne.jp から発行されています。原因としては、不適切な設定や、悪意のあるユーザーによる接続妨害が考えられます。 とありました。 試せませんが「SNI SSLが有効」でないと無理な模様です。 ご丁寧にありがとうございます!
Tomak

2017/09/08 09:38

私の環境でも試してみました。有効な証明書がない場合、https→httpリダイレクトは基本的に無理なようです。 ん~、よくよく考えたらSSLの鍵認証はURIのリライト前に行われるので当たり前といえば当たり前ですね。
kaigen

2017/09/08 09:42

わざわざ試して頂いてありがとうございました! さくらの仕様として諦めて有料SSLか移転を検討したいと思いますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問