[jin-fusen3 text=”この記事はこんな人向け”]
マルチサイトのワードプレスでSSL対応しようとしている
大半のサイトは変えられたけど、メインサイトだけ変えられない
そもそもブログなんかやってないけど内容が知りたい
どうもこんにちは。さんぺいっち(@3pei_tw)です。今回は割とまじめな話です。
はじめに結論を書いておきますが、マルチサイトの主サイトをプラグイン抜きで完全HTTPS化するには、簡単な方法はありません 。これから書く方法は結構危険な作業です。失敗してもいいなら参考にしていただいて全くかまいませんが、失敗しても僕は責任をとれません。悪いことはいいませんからおとなしくプラグインに頼っておいたほうが楽ですよ。
マルチサイトのメインだけSSL化できない!
おっ、読まれるんですね。いばらの道かもしれませんがいいですか?ってくどいかw
さて、どういうことかと言いますと、ワードプレスっていうこのブログを形作っているものがあるんですが、そのwordpressには中級者以上向けの機能的なもので「マルチサイト」っていうものがあります。
「マルチサイト」っていうのは読んで字のごとく1つのインストールで複数のサイトが構築できる機能になります
[box05 title=”ここが詳しい”]
WordPressマルチサイトのメリット・デメリット・設定方法
https://www.vektor-inc.co.jp/post/wordpress-multi/
[/box05]
※なお専用のプラグインを使うことにより、サイトごとに独自ドメインをあてがうこともできたりします
[box05 title=”ここが詳しい”]
複数サイト運用方法(複数ドメイン型)
https://www.templateking.jp/practical/build/multi_dom.html
[/box05]
通常は1つのサーバのスペースに1つのシングルサイトを構築して運用する人が多いんでしょうが、僕ははじめから複数サイト建てたいなと思ってましたので、こういうことができると知ったら即座に飛びついてました。
で、マルチサイトを建てるにあたっては、メインとなるサイトが必要になります。それがこのブログです。
え、メインのくせにくだらないことばっかり書いてて恥ずかしくないのかって?
はい。ちょっぴり恥ずかしいですね(素直)。
問題発覚までの経緯
昨年だったか、Google先生がSSLマンセーとか言い出したので皆が慌ててSSL化しだします。
そりゃ現状広く使わてれるchromeで「保護されていない」とか書かれた日には誰も来てくれなくなるかもしれないわけですし、ちょうど無料の証明書がもらえるサービスもはじまっていたことで、一気にブログ界隈ではHTTPからHTTPSへシフトすることとなりました。
[box05 title=”ここが詳しい”]
アドレスバーに「保護されていません」が出るのはどんな時?
https://zenlogic.jp/aossl/browser/safety-indicator_light/
[/box05]
で、うちもそのサービス “Let’sEncrypt ” を使って証明書をいただき、それをwordpressのプラグインを使って 適用させておりました。
それが先日、実はプラグインなんて使わずに設定をちょいちょいいじるだけでSSL化できちゃう、というのを知ったんです。
プラグインっていうのは便利な反面、入れすぎるとサイトの負担になるとよく言われています(要は表示が遅くなる)。そのあたりはあんまり気にしていなかったのですが、重すぎて、せっかく来てくださった方々に不快な思いをさせるのも本意ではないので、簡単に対処できるならプラグインは使う必要もないな、と思い設定を変更してみました。
設定作業はあっさり終わり、プラグインを無効にしても問題なくHTTPS表示ができているようにみえました。
ええ。そうだと思っていたんです・・・
予兆
ここんところ以下のような悩みが出ていました
①無効にしたはずの自サイトリンクでリンクされました通知が来るようになった
②パーマリンクがhttp://3pei.info~(非SSL)で出てきていた(実害無し)
②は実害ないので見て見ぬふり。①はちょっと気になるなー。Wordpressの仕様でも変わったのかなー ぐらいに考えてました。
しかし検索してもそれらしいものはヒットせず。それなりに使われている方法だろうからおかしくなったらすぐ誰かが気づいて対策おしえてくれたりするよなー、と他力本願丸出しの僕だったんですが、目立つ検索結果がない=僕んとこの環境特有という事実に向き合うことになりました。
いろいろ可能性を考えます。そして熟考を重ねた結果、一見バラバラに見える悩みが1つにまとまります。推理小説マニアなら点が線でつながるってやつでしょうかね。
そうだSSL化だ!
わかってしまえばなんてことはない話なんですが、ここに行きついた自分をほめてあげたい気分です。
①自サイトリンクの通知
→設定でSSL化することによりHTTPサイトからHTTPSサイトへのリンクの扱いとなり、他サイトからリンクされたと思ったうちのワードプレスがご丁寧に通知してくれていた
②パーマリンク
→WPのマルチサイト環境における制限(下記参照)によるもの。設定でHTTPをHTTPSに直すことで改善した
根本原因解説
原因はSSL化の設定をプラグインから.htaccessでの処理に変えたことなんですが、根本的な原因はWordPressのマルチサイトの仕様によるものでした
有志作成のドキュメントには次のような記述があります
注: 以下の手順はシングルインストールの WordPress 向けのものです。WordPress マルチサイトをお使いの場合は、データベースを手動で編集する必要があります。
※https://wpdocs.osdn.jp/%E3%82%B5%E3%82%A4%E3%83%88_URL_%E3%81%AE%E5%A4%89%E6%9B%B4
通常、ほとんどのシングルサイトはこのような設定画面になっています
※同一VPS内にある、マルチサイトの1つなんですが、ほぼシングルサイトと同じような表記なので参考まで。
これがマルチサイトのメインになっているとこうなります。
はい。見事にいじれなくなってます。
※作業後に取ったSSなので既にHTTPS化済みですが
こうなることには恐らくですがこんな理由が考えられます。
マルチサイト環境のメインサイトは基幹サイトなため、変更されにくくしておくべき
ということで簡単には変えられません。DBをいじる必要があります。
[box05 title=”データベースのデータをいじる方法”]
①phpmyadminを使って置換する
②MySQLにコンソールで入って置換する
③WP-CLIを使って置換する
[/box05]
①の一括置換はやったこともあるので簡単にできそうなところなんですが、諸事情により消した過去があります
※いれとくと海外の方がいろんなワードでログインしようとアタックしてくるんですよw
まぁ大丈夫かとは思ったんですが消しといたほうが精神衛生上良いかと思って。
②はうっかり間違ったら大惨事になりかねないのでやめとこうかと
※③も正直ほとんど変わらんけど
③使ったことない。使う機会は今しかない。迷わずこれに決定
WP-CLIとは
だいぶ長くなったので端折りますが、コンソール画面からコマンド入力でワードプレスの設定を変えるものです(はしょりすぎ)。
①WP-CLIをインストール
②データ一括置換コマンドを入れて一括置換
wp-cli.phar search-replace 'http://3pei.info(変更前のアドレス)' 'https://3pei.info(変更後のSSLアドレス)' --path=/var/www/html/ --skip-columns=guid --allow-root
③実行してうまくいけば一気にすべてが解決
※サイトURL指定箇所以外にも検索ワードに合致するものは根こそぎ変更されます
まとめ
マルチサイトの主サイトについてはGUIでのURL設定変更ができません。コマンドラインのみの対応です。PHPMYADMINを使うのが一番でしょう
くどいようですが危険な作業です。コピペでできるもんじゃありません。コマンドの意味、使い方が判らない方は絶対に避けるべきです
作業についてはすべて自己責任でおねしゃす。
以上、長いことお付き合いいただきありがとうございました。