新・元地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記

自由な20代、窮屈な30代を経て、遂に40代になっちまったWebディレクター&パソコン講師の覚書と思う言(こと)。略称【ちほちゅう】

*

WordPressをhttps(SSL)化、さくらインターネットのレンタルサーバーでリダイレクトループさせない「.htaccess」の書き方【後編】

   

  • このエントリーをはてなブックマークに追加

1年以上前の記事です。内容が古い可能性があります。

以下の続きとなります。

WordPressをhttps(SSL)化、さくらインターネットのレンタルサーバーでリダイレクトループさせない「.htaccess」の書き方【前編】

前編はぶっちゃけ、さくらのレンタルサーバーに関してではなく、AWS(アマゾンウェブサービス)に関しての記事になってしまっていました。
タイトルも「AWS(アマゾンウェブサービス)でリダイレクトループさせない「.htaccess」の書き方」に変えたほうが良かったかもしれません。
実際、紹介されているスクリプトはそのための記述となっていますし。(動作確認はしておりませんが)

スポンサーリンク
 

で、本題です。

前編の最後にAWSの「X-Forwarded-Proto」に当たるのがさくらのレンタルサーバーでは「X-Sakura-Forwarded-For」になる。
みたいなことを書きました。

ここ、実は厳密には違うようでして。。

というのは、前編で紹介したスクリプトの「X-Forwarded-Proto」を単純に「X-Sakura-Forwarded-For」に書き換えただけではちゃんと動いてくれなかったから。

こんな感じですね。

RewriteEngine On
# Force HTTPS
RewriteCond %{HTTP:X-Sakura-Forwarded-For} !=https
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]

これではダメでした。

ただし、考え方的には同じなようでして、それに関しては以下のサイトを参考にさせていただきました。

さくらのレンタルサーバで共有SSLを使用する場合、以下の点に留意する必要がある。

(中略)

PHP からの参照時
  • SSLアクセス時には、$_SERVER[‘HTTP_X_SAKURA_FORWARDED_FOR’] および $_ENV[‘HTTP_X_SAKURA_FORWARDED_FOR’] にはクライアント(リクエスト元)のIPアドレスが設定される。
  • SSLアクセスした場合であっても、mod_rewrite.c の RewriteRule によりリライトされるケースでは、$_SERVER[‘HTTPS’] と $_ENV[‘HTTPS’] が設定されない。
    RewriteRuleの[R]フラグによりhttps://〜にリダイレクトされた場合には ‘on’ が設定される。

WordPress 等では、SSL 接続かどうかを $_SERVER[‘HTTPS’] もしくは $_ENV[‘HTTPS’] の状態で判別している。
このため、上記のように $_SERVER[‘HTTP_X_SAKURA_FORWARDED_FOR’] が設定されているかどうかで SSL かどうかを判別し、SSL の場合には $_SERVER[‘HTTPS’] および $_ENV[‘HTTPS’] に ‘on’ を設定するような処理を追加してやる必要がある。

情報源: さくらのレンタルサーバ・共有SSLで .htaccess によりSSLのみのアクセス許可を設定する方法 – 風柳メモ

原因がロードバランサにあるのかどうかはわかりませんが、さくらのレンタルサーバーで「RewriteRule」を使ったリダイレクトをすると「$_SERVER[‘HTTPS’] 」や「 $_ENV[‘HTTPS’]」が設定されず、それが原因でSSL通信と判断されずにリダレクトを起こしているとのこと。

ということで、$_SERVER[‘HTTP_X_SAKURA_FORWARDED_FOR’] が設定されているかどうかで SSL かどうかを判別し、SSL の場合には $_SERVER[‘HTTPS’] および $_ENV[‘HTTPS’] に ‘on’ を設定するような処理を追加してやるということになります。

ということで最終的には上記サイトの記述を使わせていただくことにしました。。

RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

情報源: さくらのレンタルサーバ・共有SSLで .htaccess によりSSLのみのアクセス許可を設定する方法 – 風柳メモ

ポイントは2行目ですね。
こちらで「X-Sakura-Forwarded-For」が設定させているかどうかを見てリダイレクトをさせています。
むしろ、1行目はなくても動くようですね。(念のため、そのままにしておりますが。。)

なんだかまだ、モヤモヤしているのですが、一先ずこれで解決。

とはいえ、

将来的にさくら側で仕様変更が行われると、%{HTTP:X-Sakura-Forwarded-For}による判別が出来なくなる可能性はある。

とのことですから、いずれ時間を取って根本的な解決方法を探ってみたいと思います。

 - WordPress, プログラミング, 覚え書き , , , , , ,

アドセンス広告メイン

Message

メールアドレスが公開されることはありません。

  関連記事

Dream Weaver CS3はユニコードがお好き

1年以上前の記事です。内容が古い可能性があります。Dream Weaver(ドリ …

Flickr(フリッカー)とFacebook(フェイスブック)の連携を復活させる方法

1年以上前の記事です。内容が古い可能性があります。Flickr(フリッカー)とF …

ソフトバンク「iPhone 5」で余計なサービスを解約する方法(iPhone基本パック編)

1年以上前の記事です。内容が古い可能性があります。娘がついにスマートフォン(スマ …

YouTubeでアップロード中にソーシャルゲーム(ソシャゲ)プレイは注意。通信エラーで最悪データ破壊も

1年以上前の記事です。内容が古い可能性があります。たぶん、パズドラだけじゃなくて …

食べログでは3.5点以上は満足できるお店、3点以上で及第点

1年以上前の記事です。内容が古い可能性があります。これ、結構重要なことだと思った …

給与未払い問題。「労基(労働基準監督署)」でだめなら次は「法テラス」へGO!!

1年以上前の記事です。内容が古い可能性があります。さて、労基さんが匙を投げた給与 …

Facebookグループ(お魚さん友の会)を作ってみた

1年以上前の記事です。内容が古い可能性があります。初めてFacebookグループ …

no image
企画書は長期構想で一気に仕上げろ!!

1年以上前の記事です。内容が古い可能性があります。ディレクターになり企画書を書く …

no image
ワード(Word)の隠し文字の使い方

1年以上前の記事です。内容が古い可能性があります。パソコン教室でワード(Word …

Windows Media PlayerでMOV(QuickTime)を再生する方法

1年以上前の記事です。内容が古い可能性があります。「シリーズ動画」を終了させてい …

血液型オヤジ