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

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

*

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

      2017/09/22

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

WordPressのhttps(SSL)化がほぼ終了しました。
思いつきで行なったため、httpとhttpsとの両方のURLで記事にアクセスできてしまう状態のまま数ヶ月。
それが直接の原因であるかは不明ですが、PVが落ちてきて結果、広告収入も落ちるという状態に。

最も、もともとhttps化すると広告収入は落ちるとGoogleさんは公式に言っていて、それもあったのかもしれません。
まあ、広告収入はいいんです。
いや、よくはないけれどもそれよりもPVが落ちてきていることのほうが問題。

ということで、PV回復のためにもhttpでのアクセスがあった時にhttpsにリダイレクトする設定を.htaccessに書くことにしました。
ただ、この設定が大変だったのです。

スポンサーリンク
 

一般的には以下のような表記にするとhttpでアクセスがあったときにhttpsにリダイレクトしてくれます。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

情報源: httpからhttpsに.htaccessを使ってリダイレクトさせる方法 | ホワイトベアー株式会社

が、これだとリダイレクトループになってしまい、サイトが表示すらされなくなってしまう。

というのは。

さくらインターネットのレンタルサーバー等、共有の安価なサーバーでは外向けにはhttpsを使っていても、ネットワーク内ではhttpでやり取りするという形になっているところが多いようでしてそこが落とし穴になっていました。

以下のサイトに詳しく書かれています。

原因についてはココが詳しい。ざっくりまとめると、

  • ロードバランサが443へのアクセスを80へのアクセスに変換する
  • .htaccess内の RewriteCond ${HTTPS} が永遠に on にならず、リダイレクトの度にRewriteRule が走ってしまう

元々のアクセスが https か http のどちらかが分かれば良いのだが、上記の挙動のせいで、https にリダイレクトしたとしても http からアクセスされたことになり、これが永遠に繰り返されてしまう。

情報源:リダイレクトループしない HTTPS強制.htaccessの書き方 (AWS、開発環境共存対応) | ikuty.com

こちらはさくらのレンタルサーバーではなく、AWS(アマゾンウェブサービス)での話。
ロードバランサというのが悪さをしているということのようです。
悪さというか、本当はサーバーの不可を減らしたりと何かの便利なロードバランサなのですが、これが443(https)へのアクセスを80(http)に変換してしまっているため、何度も何度もhttpをhttpsに書き換えるという行為が行われてしまうとのこと。

いわゆる安物買いの銭失い状態だったということでしょう。
さくらインターネットのレンタルサーバー月500円と、ラピッドSSL年1500円でhttps実装なんて虫の良いことを考えていたものですから。。
おそらく、高性能な専用サーバーであればこういったトラブルは起きないんじゃないでしょうか?

ただ、これを解消する方法はちゃんとあります。
なんでも、

ロードバランサに到着した元のアクセスが http のときに限り、X-Forwarded-Proto というヘッダが付与され値が入るらしい。なので、X-Forwarded-Protoヘッダの内容を http か https かの判断基準にすれば良い、というのが基本的なアイデア。

とのことで、具体的には以下の様は表記に変えればOKとのこと。

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

ポイントは3行目の

RewriteCond %{HTTP:X-Forwarded-Proto} !=https

の部分です。
ここで、X-Forwarded-Protoを読み取り、httpsじゃないときだけリダイレクトさせるという形にしています。

が、これはあくまでも引用元記事の筆者が使っている「AWS(アマゾンウェブサービス)」での書き方。
さくらインターネットのレンタルサーバーでは、上記の記述ではちゃんと動いてくれません。
どうも、さくらのレンタルサーバーの場合はこれにあたるのが「X-Sakura-Forwarded-For」になるようなんですよね。

と、なんとなくここまでわかったところで続きは次回

 - WordPress, 覚え書き , , , , , , ,

アドセンス広告メイン

Message

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

  関連記事

no image
各種ECサイト(ショッピングサイト)料金比較一覧 (11/3追記)

1年以上前の記事です。内容が古い可能性があります。過去にやってるかなぁと思ってい …

Cドライブがダブルクリックで開かない

1年以上前の記事です。内容が古い可能性があります。CドライブやDドライブ(MO等 …

no image
「Google Chrome」でPDFファイルは開かないほうがいい

1年以上前の記事です。内容が古い可能性があります。もっとも、一番の原因は僕の使っ …

no image
子供向け最強集客ツール

1年以上前の記事です。内容が古い可能性があります。連休中に子供とちょっとお出かけ …

LINE(ライン)でブロックされた相手にメッセージを送りトークする方法

1年以上前の記事です。内容が古い可能性があります。この方法使うと、ブロックされた …

no image
内部SEO(SEOコーディング)まとめ

1年以上前の記事です。内容が古い可能性があります。ここのところちょっと手を離れが …

no image
デザインの配色に迷ったときに使えるツール

1年以上前の記事です。内容が古い可能性があります。デザイン系ブログとしてよく読ま …

最近のメール設定は複雑(チェックしておくべき3つのポイント)

1年以上前の記事です。内容が古い可能性があります。コンピュータの世界ではセキュリ …

カーナビの地図更新サービスの無料期間が終わりそうなので地図データをアップデートしてみた(ID取得編)

1年以上前の記事です。内容が古い可能性があります。1. ID取得編 | …

殆どのスマホユーザーの個人情報はFacebookに握られている

そう、それがシャドープロファイルと言われているものです。
そして怖いのはこのシャドープロファイル、Facebookアカウントを作ったことのない人のものまで作られているとのことです。

あるFacebookユーザーの連絡先にあなたの個人情報が書かれていたら注意。
その方がFacebookに連絡先へのアクセスを許可していたらあなたがFacebookをやっていなくてもアウトです。 

ではどうやったら防げるのか?
最近ではFacebookアプリがプリインストールされているスマホ(スマートフォン)も多いのでほぼ防ぐことは不可能でしょうね。

つまり、

過去にFacebookのアカウントを作ったことがなく、Facebookを利用している人とアドレスなどの交換をしていないという場合のみ「あなたのシャドープロファイルは作られていません」

とのこと。
Facebookのアカウントを作ったことがない人は結構いるんじゃないかと思います。
ただ、Facebookを利用している人とアドレス交換をしていない人なんて殆どいないんじゃないでしょうか?
そもそも、その人がFacebookをやっているのかどうか調べてアドレス交換するなんてことできないでしょうし。。

これから、こういった情報が一般的になってくると、自分のようにFacebookやってる感を前面に出している人なんかは逆に、嫌厭されてしまうような時代がきてしまうのかもしれません。
でもね。
結局は架空請求や先日被害にあった債権回収詐欺等、それを使う悪いやつがいなければ別に個人情報何ら問題ないんですよね。
だって、かつては電話帳(ハローページ)に普通に電話番号が載っていた時代があるんですから。
嫌な時代になっちゃいましたねぇ。。

あとはFacebookの技術を信じて、そういった悪い輩に個人情報が流れないようにしてもらうしかないですね。
よく、「あとは神のみぞ知る」なんてこと言うことがありますが、Facebookもそういう意味では神の領域に入りつつあるのでしょうか?
人間が神の領域に足を踏み入れるとどうなってしまうのか? 注目して行きましょう。 

血液型オヤジ
S