no image

WordPressにHTTPを利用するコンテンツが含まれるか確認する

1. HTTPコンテンツを撲滅する

Googleが提供するブラウザ、Chromeでは暗号化されない通信HTTPの廃止を進めています。
2020年1月に提供される予定のChrome 80以降では動画/音声コンテンツが、81では画像についてもhttpコンテンツを自動的にhttpsで読み込む様に変更される予定です。

基本的には既存コンテンツでhttpリンクを利用していても、コンテンツ配信元がhttpsでの提供を併せて実施しているのであれば、サイトコンテンツが見られなくなる等の影響はありません。ただ自分の運営するブログ記事にどの程度httpリンクが含まれているのか把握しておきたいと考え、調査して見ました。

2. WordPressでのhttpコンテンツ調査

私の場合はWordPressでサイト運営している為、WordPressで調査しています。
WordPressでは共通部分はテーマのPHPファイル、個別記事内容はデータベースに保存されています。
今回は上記の2箇所について調査しています。

2-1. テーマファイルに埋め込まれたhttpリンクの調査

httpリンクの調査

 $ cd [WordPress-Root-Directory]
 $ cd wp-content/themes
 $ pwd
 ~/wp-content/themes
 $ grep -r http:// ./*

上記で検索されたhttpリンクを一括でhttpsへ置換する場合は、以下のコマンドを実施すれば一括置換可能です。

 $ pwd
 ~/wp-content/themes
 $ sudo grep -rl 'http:' ./* | xargs sudo sed -i.bak -e 's/http:/https:/g'

sedで-i.bakとしているのはsedで置き換える前のファイルを.bakとしてバックアップファイルを作成する為です。

2-2. データベースに保存されている個別記事のhttpリンク調査

WordPressを構成するMySQL/MariaDBを直接操作します。ログイン可能なユーザ/パスワードを確認してから作業を開始します。

MySQL/MariaDBへ接続

 $ mysql -u [username] -p [password] 

データベースを選択

 > use wordpress; 

テーブル名を確認する

 > show tables where Tables_in_wordpress like '%_wp_posts';
blog_wp_posts

httpリンクを含む記事を抽出する

WordPressでは記事の世代管理を実施しているため、1つの記事に対し、複数の行(リビジョン)が選択される可能性があります。

 > select post_date,post_name from blog_wp_posts where post_content like '%http://%'; 

記事内に記載されたhttp://をhttps://へ修正する

ここではあくまでのデータベースの記事に含まれるリンクの修正を実施しているため、記事の更新日時の更新はかからず、過去の履歴を含めた全ての記事に対し更新がかかる点に注意する必要があります。

 > update blog_wp_posts set post_content=REPLACE(post_content,"http://","https://");