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

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

ただいまの
回答率

90.75%

  • .htaccess

    358questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 485

kaigen

score 4

さくらのレンタルサーバーで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.com ⇒ http://example.com
に統一です。

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hotta

    2017/09/06 09:19

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

    キャンセル

  • kaigen

    2017/09/08 17:58

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

    キャンセル

  • hotta

    2017/09/08 19:33

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

    キャンセル

回答 1

checkベストアンサー

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}の変数値には関係ないと思われます。(違うかもしれません)

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/08 17:57

    詳細アンサーありがとうございます。

    「さくらのSNI SSLが有効になっていて」という部分。
    httpに統一するのにも有料SSLを有効化する必要があるとは思っておらずに、根本的な理解が足りませんでした。有料で導入するのは気が引けるので、私の場合にはさくらでは実現不可能という事だとわかりました。

    「https://がリクエストの場合は%{HTTP:X-Sakura-Forwarded-For} = クライアントIPアドレス」
    この部分も「SNI SSLが有効」ではじめて利用できる変数だという事がわかりました。

    今回は私には実現できませんでしたが、
    「RewriteCond %{HTTP:X-Sakura-Forwarded-For} !^$」の否定!が抜けていた事に気付けました。

    ご丁寧なご回答ありがとうございました。

    キャンセル

  • 2017/09/08 18:08

    >さくらのSNI SSLが有効になっていて
    すみません、回答が間違っていました。いろいろ切り貼りしていたらへんなのが残ってしまっていました。(←修正しておきます)

    %{HTTP:X-Sakura-Forwarded-For}←この変数についてSSLがきちんと有効になっているか(SNI SSL)、いないかが関係あるのかは不明です。間違っているかもしれませんが、私の認識ではプロキシに入ったかを表す変数なので関係ないと思っています。

    混乱させてしまい申し訳ありません。

    キャンセル

  • 2017/09/08 18:22

    追記ありがとうございます。

    実は頂いたコードで念のため試したのですが、httpsページで転送する事ができませんでした。
    (キャッシュなどきちんとデバッグは行えているはずです)

    プライバシー保護エラーの詳細には、
    このサーバーが hogehoge であることを確認できませんでした。このサーバーのセキュリティ証明書は *.sakura.ne.jp から発行されています。原因としては、不適切な設定や、悪意のあるユーザーによる接続妨害が考えられます。
    とありました。

    試せませんが「SNI SSLが有効」でないと無理な模様です。
    ご丁寧にありがとうございます!

    キャンセル

  • 2017/09/08 18:38

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

    キャンセル

  • 2017/09/08 18:42

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

    キャンセル

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • .htaccess

    358questions

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