「ウェブサイトとブログを常時SSL化するための準備」で書いた会社のウェブサイトは、どうにか常時SSL化することに成功した。さて次は、このブログとは別に運営している会社のオフィシャルブログの常時SSL化だ。このブログは、ウェブサイトと同じドメインのサブディレクトリに割り当てられたデータベースを利用したWordpressで運営している。同じホスティングサービス会社によるものなので簡単かと思いきや、これがなかなかハードな作業だった。
困難なサブディレクトリ・ブログのSSL化
まずはホスティングサービス会社にメールで質問。すると以下のような回答が来た。
「WordpressのサイトSSL化について、以下のような方法がございます。
- doc_rootにファイルが置かれている状態で、CMSにログインし、 サイトのアドレスを「http://」から「https://」に変更する
- 上記操作後、FTP等でdoc_root配下のWordpressフォルダをssl_rootに移動する
ただし、お客様のコンテンツがどのように作られているか、こちらで把握しかねる範囲となり、本来サポート外の内容でございます。SSL化の実施につきましてはお客様の責任のもと、ご判断をお願いいたします。」
サポート対象外は厳しいが、まずは書かれている通り試してみよう。ダッシュボードの「設定」⇒「一般」画面で、
- WordPressアドレス(URL)
- サイトアドレス(URL)
の2か所に書かれた自分のURLのhttpを、httpsに書き換えてみる。そして保存すると、突然画面が真っ白になり500エラーとなってしまった。あわててブラウザーの「戻る」ボタンをクリックしてみたが時すでに遅し、戻ることさえ出来ない。その後ブログもダッシュボードも一切アクセスできなくなってしまった。
解決策を探すべく、ネットをググる…、同じような症状に出くわした人は結構いるらしい。何人かが書いていた共通の解決策は以下の通りだ。
- WordPressの全ファイルをダウンロードする
- その中のwp-config.phpというファイルを開け、
「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」
というテキストを探す - そのテキストより上に
「define(‘WP_SITEURL’,’本来のブログURL’);」を追加し、文字コードUTF-8N+改行コードLFで保存し、再びアップロードする
上記の通り、慎重にファイルを書き換えてアップロード。そして、どうにかSSL化作業前のブログに戻すことが出来た。
次に試したのは、Wordpressのプラグインを使う方法だ。
最近は多くの人がSSL化対策をしているので、WordpressのSSL化についてもたくさんの人がブログに書いている。いろいろ参考にさせてもらったところ、Wordpressのプラグインのひとつ「Really Simple SSL」を使って簡単にできるらしい。
さっそくこのプラグインをインストールしてみた。「プラグインを有効化すると作業画面になる」というのだが、いざ有効化するとエラー(すでにこのプラグインを削除し独自で行ったので、どんな文句だったか忘れたが)が出る。
どうやらブログがサブディレクトリにあるため、同じルートディレクトリ間でのSSL化が条件のこのプラグインでは簡単にSSL化できないようだ。
プラグインでは解決しない、はたまた画面が真っ白になるような心臓に悪い症状はこりごりなので、しばらくはWordpressのブログをそのままにしておいた。
サブディレクトリ・ブログのSSL化の最終解決策
しかし、せっかくドメイン上はSSL化できているのに、サブディレクトリにおいてあるだけでSSL化出来ないのはやはり納得がいかない。他に解決策はないものか?そう思い、もう一度冷静に考えてみた。
- いっそWordpressのブログをBloggerにお引っ越し(Bloggerは最初からhttps化されている)
- 再びwp-config.phpファイルの書き換えを検討する
- SSL化を諦める
1のBloggerへの引っ越しは、出来上がっているブログの構成上なかなか難しい。また3については選択肢としてはあり得ない。
結果、2のwp-config.phpファイル書き換えに再びトライすることにしよう。そして注意深くファイル書き換えをしようとしたところ、ふとあることに気付いた。
現在会社のウェブサイトアドレスは、
https://www.〇〇〇.com/
というhttps + WWWありのドメイン、一方サブディレクトリ・ブログのアドレスは、
http://〇〇〇.com/△△△/
と、http + WWWなしのドメインを使用している。
そういえばSSL証明書発行の際、会社のURLのドメインをWWWをつけた状態で申請していることを思い出した。それならば、wp-config.phpファイルに「define(‘WP_SITEURL’,’ブログURL’);」を追記する際、
https://www.〇〇〇.com/△△△/
と書けば、ウェブサイトのドメインと一致する。
さっそくwp-config.phpファイルの、前回追記した場所に上記https + wwwをつけたURLを書いてアップロード。そして上記URLをアドレスバーに入力してみると、問題なくブログが表示された。後はファイル内のhttpをhttpsに書き換える作業だけだ。ブログ内での一斉書き換え作業は、Wordpressのプラグイン「Search Regex」を使えば簡単にできる。
まとめ
うちの会社の場合、サブディレクトリ・ブログの常時SSL化の解決策は「SSL化されたルートディレクトリのドメイン名を正しく書くこと」だけだった。しかしこのケースは稀なので、一般的な常時SSL化の参考にはならないと思う。通常、同じルートディレクトリ間でのSSL化なら上記1うちのいずれかで解決できるだろう。
この記事は、既にSSL化されているブログサービスを利用している人や、ルートディレクトリのドメイン名のブログを運営している人には関係ないかもしれないが、備忘録として書いておいた。
コメント