新・元地方の中規模印刷会社で苦悩する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

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

  関連記事

ワードプレス(WordPress)、トップページとは別の場所で記事一覧を表示させる方法 #wp

1年以上前の記事です。内容が古い可能性があります。ワードプレス(WordPres …

no image
ツイッター(Twitter)の9つのルールが参考になる

1年以上前の記事です。内容が古い可能性があります。ロケットニュースさんで扱ってい …

シッポの状態と動きでわかる猫の気持ち

1年以上前の記事です。内容が古い可能性があります。とあるサイトでこんなものを見か …

最近、2ちゃんねるまとめブログ風のランディングページ(偽ブログ)が乱立しているくさい

1年以上前の記事です。内容が古い可能性があります。以前、キラキラ☆ウォーカーに騙 …

no image
使わなくなったデータCDどうする?

1年以上前の記事です。内容が古い可能性があります。「個人情報保護法」なんてのが施 …

no image
アナログテレビでデジタル放送を見る方法

1年以上前の記事です。内容が古い可能性があります。っていうか、何もしなくても見れ …

no image
Internet Explorer 7にGoogle maps APIのバグ?

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

「いいね」ボタンがなくても「いいね」ができるブックマークレット【Facebook】

1年以上前の記事です。内容が古い可能性があります。Facebook(フェイスブッ …

デマを広める前に右クリックで「この画像を検索」。ツイッターでのリツイートは特に注意!

1年以上前の記事です。内容が古い可能性があります。先日、都内で凄い雹が降ったとツ …

小さい子でもできる百人一首「坊主めくり」には様々なルールがあった

1年以上前の記事です。内容が古い可能性があります。お正月と言うことで家族で百人一 …

血液型オヤジ