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

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

  関連記事

no image
最適化をしたらメールが消えたときの対処法

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

no image
Dreamweaverでよく使う正規表現

1年以上前の記事です。内容が古い可能性があります。Dreamweaverを使って …

絶対使ってはいけないビジネス敬語を結構使ってた

1年以上前の記事です。内容が古い可能性があります。学校でビジネスマナーなんてのも …

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

1年以上前の記事です。内容が古い可能性があります。「NotTV」に続いては「My …

no image
「モバイル版foursquare」でチェックインしてもメイヤーにはなれない

1年以上前の記事です。内容が古い可能性があります。iPhoneを解約してケータイ …

科学的に証明されている不幸になる行動。SNSをやらたと見る、いつも忙しくする、等

1年以上前の記事です。内容が古い可能性があります。以下の行動をついついとってしま …

QRコードが作れるサイト

1年以上前の記事です。内容が古い可能性があります。意外とみんな知らないようなので …

突然メールが送信できなくなった(サブミッションポート)

1年以上前の記事です。内容が古い可能性があります。会社で突然メールが送信できなく …

Window用FTPクライアントソフト「WinSCP」で「.htaccess」を表示させる方法

1年以上前の記事です。内容が古い可能性があります。FFFTPがガンブラーの標的に …

Excel(エクセル)を使ってHTMLの表組みの行(横軸)と列(縦軸)を簡単に入れ替える方法

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

血液型オヤジ