https 対応化



https 優先

www.trueroad.jp は、少々前から http / https どちらからでもアクセスできるように設定していました。 https の URL にはどこからもリンクを貼ったりしなかったのですが、 しばらくすると、検索では https の方が出てくるようになり、 ブラウザでも単に www.trueroad.jp と入力しただけで https の方が 選択されるようになったり、とにかく世の中 https を優先するんだ というのがよくわかりました。

一応、http / https どちらでも まったく同じコンテンツへアクセスできるように設定していたのですが、 単純に https にすると一部のインライン表示するコンテンツが http のままのため表示できなる、という不具合が出ていました。 分かってはいたのですが https がメインではないので、 という言い訳で放置していたのです。 ですが、世の中とにかく https 優先になってきて、これは直さないとマズいかも という状況になり、でもあまり手を付ける時間もなく、、、 ようやく対処してみました。

置換

ほとんどのリンクは相対リンクにしていたので、そういうところは https 化しても問題ないのですが、http:// から指定している部分は全部 https:// に置き換えることにしました。 本ページは手元では git でバージョン管理していますので、 とりあえず対象がどれぐらいあるのか見てみるために、

$ git grep "http://www.trueroad.jp/"

してみたところ、結構な数がでてきました。 エディタでいちいち置き換えていってもいいんですが、 数があると面倒ですしミスがあると大変です。 そこで sed で置き換えてみようかと、以下のコマンドを使いました。

$ find . -name "*.html" | xargs sed -i 's@http://www.trueroad.jp@https://www.trueroad.jp@g'

sed のデリミタは普通は / (スラッシュ)なのですが、 URL にはスラッシュが含まれているのでエスケープしなければならず面倒です。 そこで、デリミタとしてとりあえず @ (アットマーク)を使って / のエスケープを回避しているのがミソでしょうか。 その上で、うまく置き換わってくれたか以下のコマンドで確認します。

$ git diff

うまくいったようなので、git add して git commit して完了です。 他にも、LilyPond の URL が www.lilypond.org から lilypond.org に変わった (リダイレクトされます)のがありましたので、これも、

$ find . -name "*.html" | xargs sed -i 's@http://www.lilypond.org@http://lilypond.org@g'

として置き換え、git diff で確認、git add して git commit します。 さらに、複数行をドカンと置き換えたいところがありました。 以下のような感じになっている部分です。

<div class="foo">
bar
baz
</div>

bar, baz の行を置き換えたいので、 以下のようにします。

$ find . -name "*.html" | xargs sed -i '/<div class="foo">/,/<\/div>/c<div class="foo">\nBARBAZ\n</div>'

sed に指定しているパラメータは、 '/置き換え前の最初の行/,/置き換え前の最後の行/c置き換える内容/' という内容です。 今回、置き換え前の最後の行が </div> で / (スラッシュ) を含んでいます。URL の置き換えではデリミタを変更しましたが、 こちらの複数行の置き換えでは変更できないみたいなので、 <\/div> のようにエスケープしています。 置き換える内容の方にも置き換え前の最初の行・最後の行を入れておき、 \n で改行を入れています。 こちらにもスラッシュはありますが 特にエスケープしなくても問題なさそうだったので、していません (本当は sed の仕様をきちんと確認すべきかとは思いますが。。。)。 これで置き換えるとこんな感じになります。

<div class="foo">
BARBAZ
</div>

そして、git diff で確認、git add して git commit します。

その他

連絡先、というか 筆者について のページを更新しています。 Extract PDFmarkについて追記、あわせて TeXConf 2017 やその 資料等 を追記しました。 さらに Qiita へのリンクを追記しています。

その他、気が付いたところの個別のリンク切れを修正したり、 細かい修正をしています。

おわりに

これで長いこと懸念事項だった https 化がとりあえず完了しました。 しばらくは http / https 双方で同じコンテンツが見えるようにしようかと 思っていますが、しばらくしたら変更するかもしれません。