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

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

*

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

   

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

以下の続きとなります。

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

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

  関連記事

iPhoneの「Eメール(i)」をOutlook Expressで受信する方法

以前書いたこちらの記事で触れたように、iPhone(アイフォーン)の「Eメール( …

痩せたいなら断つのは甘いもの。脂っこいものやお酒以上に効果あり

いまさらなんですが、これってみんなの共通認識として一般化してるよね? つまりはダ …

ブログの記事にブコメ一覧を表示させるようにした

ブコメってのはブックマークコメントの略で、はてなブックマークでブックマークをする …

no image
予約語

まずは通りすがりさんありがとうございます。

Androidスマホで「・(中黒・中点)」を入力する方法

「ダイ・ハード」や「プロット・ファクトリー」など、カタカナ英語によく使われている …

ブログとツイッター(twitter)の連携について一部変更

いろいろなサービスを使っていますが、やはり核となるのはブログ。そして、それに追随 …

「ヨメレバ」が便利そうなので色々なアフィリエイトに手を出してみた(e-hon / bk1編)

だいたい有名なアフィリエイトは「リンクシェア」か「バリューコマース」を使っている …

「NotTV」の解約方法【docomoのスマホ契約後の有料サービス解約手順】

以前、書いたこちらの記事の続編。 □ スマホ(スマートフォン)の機種変、契約時に …

さくらのレンタルサーバー+ラピッドSSLを使ってWordPressをhttps化するときの注意点

さくらインターネットで非常に安くSSLが使えるのをご存知でしょうか? なんと、1 …

no image
Foursquare(4sq)とFacebook(フェイスブック)を連携させる方法

Facebook(フェイスブック)といろんなものを連携させちゃおう第2弾。ちなみ …