WordpressをSSL化する作業がめんどくさかった。
嘘です。でもいろんなところに落とし穴が。
先日VPSからレンタルサーバーに移ったとき、無料で1年間SSL証明書をもらえるということで、何なくSSL化を考えていました。調べると意外とやらなきゃいけないことがあることが分かりまして、えいやーとやってみました。
まず私のサイトの場合、対処が必要なのはこんな項目でした。
sharehtmlの対処
sharehtmlは、外部リンクをスクリーンショットともに紹介できるブックマークレット。これが本当に、本当に便利でした。作者に感謝。
ただし、これはこんなhtmlを吐くんですね。
<div id="sharehtml"><a href="http://bizmakoto.jp/makoto/kw/300m.html"><img class="alignleft" align="left" border="0" src="http://capture.heartrails.com/150x130/shadow?http://bizmakoto.jp/makoto/kw/300m.html" alt="" width="150" height="130" /></a><a style="color:#0070C5;" href="http://bizmakoto.jp/makoto/kw/300m.html">「半径300メートルのIT」最新記事一覧 - ITmedia Keywords</a><br><a href="http://b.hatena.ne.jp/entry/http://bizmakoto.jp/makoto/kw/300m.html"><img border="0" src="http://b.hatena.ne.jp/entry/image/http://bizmakoto.jp/makoto/kw/300m.html" alt="" /></a><br><span style="color: #808080;font-size: 80%;"> </span><br style="clear:both;" /><br style="clear:both;" /></div>
問題は2つ。1つ目はハートレイルズのスクリーンショット取得API。これは無料で提供されているサービスで、ssl化するにはどうも有料契約が必要。なので、この部分を正規表現使って「 /<img.*src=*[\"|']http:\/\/capture.*?\/>/i 」をまるっと置き換えた。
置き換えは当然、Wordpressのプラグイン「Search Regex」を使うんですが、5年近く運営したWordpressでは、置き換え件数が1万件を超えてしまい、あえなくメモリ不足で落ちる。件数を絞って……と思ったら、ここにバグがあって全く動かず。ということでこちらのパッチを適用し、さらに25件(記事)ごとに置き換えすることで対応。大感謝。
もう1つ、はてなブックマーク数表示部分「<img border="0" src="http://b.hatena.ne.jp/entry/image/http://bizmakoto.jp/makoto/kw/300m.html" alt="" />」。こちらについてはhttps://b.hatena.ne.jp/entry/image/~のAPIも用意されていたので、単純に「<img border="0" src="http://b.hatena.ne.jp/entry/image/」を「<img border="0" src="//b.hatena.ne.jp/entry/image/」に置き換えて対処した。
…ということにしたかったんですが、どうやらjetpackの関連記事(これがなかなか精度がいいのよ…)がはてブのブックマーク数の小さな画像をピックアップしてしまうため、丸ごと消した。「 /<a href="http:\/\/b.hatena.ne.jp.*?\/><\/a><br>/ 」で検索書けたらうまく引っかかったのでまるっと削除。ありがとうはてブ。
アマゾンアフィリエイトの書影
次、アマゾンアフィリエイト。こちらもブックマークレットを使ってました。
これはいろいろなところで指摘されてますが、「http://ecx.images-amazon.com」を「https://images-na.ssl-images-amazon.com」に丸ごと置き換え。
以降は上記Amazletを使うのではなく、Wordpressのプラグイン「Amazon JS」に変更。これだけ。
自サイト内画像のリンク処理
セオリーではやはり「http://dpost.jp/」を単に「//dpost.jp/」に置き換えるのが正しいんですが、これやってるとめんどくさいので、プラグイン「Really Simple SSL」を入れて有効化した。
以上。大変とはいえ1日でできた。まだamazletが残ってたりなぜか置き換えできてなかったのがあったけど、残りは気になったら対応することにする。