こんにちは。今日は開発中にやらかしたミスと、その解決方法を備忘録として残しておきます。同じところでつまずいている人の参考になれば嬉しいです。
何が起きたのか
Localを使ってWordPressサイトを開発していたんですが、何を血迷ったのか、ローカル環境なのにHTTPSでアクセスしようとしてしまいました。
その結果、ブラウザに表示されたのがこちら。
この接続ではプライバシーが保護されません
攻撃者が、mysite.local 上のあなたの情報(パスワード、メッセージ、クレジット カード情報など)を不正に取得しようとしている可能性があります。
net::ERR_CERT_AUTHORITY_INVALID
怖いメッセージですよね。でも安心してください。これは単純に「HTTPSで接続しようとしたけど、SSL証明書がないよ」って言われてるだけです。
問題の本質
ローカル環境でHTTPSを使うには、ちゃんとしたSSL証明書の設定が必要なんですよね。でも開発中のローカル環境なら、普通にHTTPで十分です。
つまり、https://mysite.local ではなく http://mysite.local でアクセスすればいいだけの話でした。
ただ問題なのは、WordPressのデータベース内に「サイトのURLはHTTPSだよ」って設定が保存されちゃってること。だからブラウザで手入力でHTTPにしても、自動的にHTTPSにリダイレクトされちゃうんです。
解決方法
Localには便利なデータベース管理ツールが最初から入っているので、それを使います。
手順
- Localアプリを開く
- 対象のサイトを選択する
- 右上にある「Database」タブをクリック
- 「Open Adminer」または「Adminer」というボタンをクリック
すると、ブラウザでAdminerという画面が開きます。これがデータベースを直接いじれるツールです。
- 左側のメニューから「wp_options」というテーブルを探してクリック
- ページ上部にフィルター機能があるので、「option_name」で「siteurl」を検索
- 見つかった行の「編集」をクリック
- 「option_value」の値を
https://mysite.localからhttp://mysite.localに変更 - 保存ボタンをクリック
同じ手順で「home」という項目も探して、同じようにHTTPSからHTTPに変更します。
これで完了です。
ブラウザで http://mysite.local にアクセスすると、無事に表示されるようになりました。
なぜこうなったのか
WordPressは「サイトのURL」をデータベースの wp_options テーブルに保存しています。具体的には以下の2つです。
siteurl: WordPressのコアファイルがある場所home: サイトのトップページのURL
この2つがHTTPSになっていると、どこからアクセスしても自動的にHTTPSにリダイレクトされちゃうんですね。
もっと簡単な方法もある
もしAdminerの操作が難しそうと思ったら、wp-config.phpというファイルを直接編集する方法もあります。ただ、初心者にはAdminerの方が視覚的でわかりやすいかなと思います。
まとめ
ローカル環境では基本的にHTTPで十分です。わざわざHTTPSにする必要はありません。本番環境に上げるときにHTTPSにすればOKです。
もし同じエラーに遭遇したら、焦らずにデータベースの設定を確認してみてください。大抵はURLの設定を間違えてるだけなので、簡単に直せますよ。
それでは、良い開発ライフを。