【WordPress】解決:httpsからhttpにしたらサイトにアクセスできなくなった問題

私は今WordPressを使って、あるサイトを運営(大袈裟)しているのですが、そのサイトのメンテの都合上、httpsからhttpへ変更が必要になりました。

AWS EC2(t2.micro)にDockerでwordpress,mysql,nginx,let’s encryptコンテナの構成だったのを、一旦let’s encryptとnignxをdocker-compose.ymlから削除しました。

その状態でdocker-compose up -dしたところ、サイトにアクセスできなくなりました。ゲー。

問題は2つありました。

1つ目はChrome(ブラウザ)のモードが原因でした。

サイトのメンテをするときはChromeのシークレットモードを使った方が良いですね。

通常モードだと、キャッシュがあるためか、勝手にhttpsにアクセスさせられるので、混乱しました。

シークレットモードでhttpでアクセスすると無事にトップページにアクセスすることができました。一安心。

しかし、トップページからどこかに行こうとすると、アクセスできなくなる。。。なので、管理画面にすら行けない。。死んだ。

はい、さっき触れた2つの問題の内のもう1つはWordPressの設定です。

下記図の赤枠に示す通り、WordPressアドレス(URL)とサイトアドレス(URL)があるのですが、そこがhttpsになっていると、wordpressで自動で生成してくれるリンクがhttpsになってしまうため、トップページからリンクをクリックするとhttpsに飛ばされるという状態でした。

まぁ、上の画像は管理画面のスクショなのですが、ブラウザでこのページに行けないから困っているんですよ。。。

さて、どう解消するか。

この2つの項目はデータベースに保管されているはずですね。

じゃ、dbコンテナに入ってみます。

$ docker-compose exec db bash
root@コンテナID

入りました。mysqlに入りましょう。

root@コンテナID:/# mysql -uユーザー -p

パスワード聞かれるので入れて、mysqlに入ります。
なんのデータベースあるか見てみましょう。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress          |
+--------------------+
2 rows in set (0.00 sec)

2つありますね。当然wordpressデータベース を見たいですね。

mysql> use wordpress;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

wordpressデータベース を使います。
テーブルは何がありますかね。

mysql> show tables;
+------------------------------+
| Tables_in_wordpress          |
+------------------------------+
| wp_commentmeta               |
| wp_comments                  |
| wp_links                     |
| wp_options                   |
| wp_postmeta                  |
| wp_posts                     |
| wp_term_relationships        |
| wp_term_taxonomy             |
| wp_termmeta                  |
| wp_terms                     |
| wp_uam_accessgroup_to_object |
| wp_uam_accessgroups          |
| wp_usermeta                  |
| wp_users                     |
+------------------------------+
14 rows in set (0.00 sec)

さて、上記の管理画面のWordPressアドレス(URL)とサイトアドレス(URL)に対応するデータはどこに入っているかというと、wp_optionsテーブルです。

wp_optionテーブルのoption_idが1と2のデータをhttpに書き換えてあげましょう。

mysql> update `wp_options` set `option_value` = 'http://www.teketake.com' where `option_id`=1;
mysql> update `wp_options` set `option_value` = 'http://www.teketake.com' where `option_id`=2;

これでブラウザでトップページから別のページに行けるか確認してください。

無事にhttpで他のページにも行けるようになったと思います。

めでたしめでたし

Please share this page:

コメントを残す