楽天Goldの常時SSL化対応が面倒なのでスクリプト書いた

突然お客様から電話。楽天から電話があって、どうしていいのかわからないのでお願い、とのこと。内容はこう。

「2017年の6月末だかいつだかわかんないですけど、ともかく 常時SSL します、対応しないと 表示できなくなりますよ って脅されました。」

脅されてるかどうかは別として超めんどくさいな、ってのは想像がつく。商品ページの方は、楽天から紹介されたWEBサービスで対応できたみたいだけど、楽天GOLDへアップしたhtmlファイルのリンクを変更しないといけないらしい。ただ、ラッキーなことに楽天GOLDにアップしてるhtmlファイル内のリンクはほとんど楽天ドメインばかり。じゃあもう単純に http://https:// でよいのでは?ってことで済ませちゃった。なので、もしかすると需要は少ないかもしれませんが、誰かの役に立てば。

使い方

composer使える前提です。なので普段楽天の商品ページいじったりしてるだけの人には少々ハードル高いかも。

git clone https://github.com/comeonly/rakuten_gold_ssl
compose install

でインストール。

あとは、スクリプトを実行するだけ。

php run.php <ftp_username> <ftp_password>

ってな感じで引数にftpのユーザー名とパスワードを入れてください。直接FTPで接続してhtmlファイルを再帰的に検索しながら文字列置き換えして、ファイルを上書き保存してくれます。

で、実際どのリンクが置き換えられるかわからないことが起こりそうなので、ドライランのオプションも付けました。

php run.php <ftp_username> <ftp_password> dry

これで対象リンクとそのファイルの有るパスが一覧で表示されます。これを元に手動でやるっててもなくもないです。

中身どうなってんの?

touki/ftpってライブラリをpackagistで見つけたので使わせて頂きました。昔にこんな記事を書いて自力でFTPを操作しようとしたことがありましたが、ライブラリ使ったほうが安心できます。この頃はライブラリという言葉すらよくわかってなかったんで、若気の至りです。

comeonly.hatenablog.com

で、実際の処理ですがこんな感じ。

  1. FTP接続する
  2. ディレクトリ内のファイルを検索する
  3. ファイル名を /(.html|.htm)$/ って感じで正規表現で調べる
  4. 見つかったら str_replace で単純に http://https:// に置き換え
  5. ファイルをその内容で上書きする
  6. カレントディレクトリのディレクトリ一覧を取得する
  7. 2.に戻って再帰的にじゃんじゃんやっつけていく

とまあ超単純なスクリプトです。FTPって再帰的な処理ができないのでこういうライブラリつかって一覧を簡単に取得できると楽で良いですね。

アディオス!