403エラーが解決しない時はドメイン設定を確認しよう
こんにちは、ZIDOOKAです。 今回は、WordPressのREST APIを利用して画像をアップロードしようとした際に遭遇した、意外な落とし穴について共有します。
結論から言うと、「wwwあり」と「wwwなし」のドメインは別物として管理されているという点を見落としていました。
発生した問題
自作のCLIツールを使ってWordPressに記事を投稿しようとしたところ、画像のアップロードだけが 403 Forbidden エラーで弾かれる現象が発生しました。
通常、レンタルサーバー(今回はLolipop!)のWAF(ウェブアプリケーションファイアウォール)が検知しているケースが多いため、設定を確認することにしました。
ハマったポイント
Lolipopのユーザー専用ページでサーバーの設定を確認し、ログを見ながら調査を行っていました。 しかし、何度設定を見直しても、User-Agentを変えても、画像のリサイズを行っても、403エラーが解消されません。
「なぜ設定を変更しているのに反映されないのか?」と数時間悩みましたが、原因は非常に単純なことでした。
原因:wwwの有無
私が設定を確認していたのは www.zidooka.com の設定でした。
しかし、実際にREST APIが叩いていたエンドポイントは zidooka.com(wwwなし)でした。
Lolipopの仕様では、独自ドメインの「wwwあり」と「wwwなし」は、設定画面において別のドメインとしてリストアップされます。

上の画像のように、設定項目が分かれていることに気づかず、使っていない方のドメイン設定を一生懸命調整していたのです。 これではいくら設定を変えても、実際のエンドポイントには何の影響もありません。
解決策
正しいドメイン(今回の場合はwwwなしの zidooka.com)の設定画面を確認する必要がありました。
対象のドメインが間違っていたため、いくら調査しても原因が掴めなかったのです。
正しいドメインの設定を確認することで、ようやく状況を把握し、適切な対処を行うことができました。 ドメイン設定やログをよく確認する
まとめ
- WordPressのREST APIで403エラーが出る場合はWAFを疑う。
- Lolipopなどのサーバーでは、「wwwあり」と「wwwなし」の設定が独立している場合がある。
- 自分がアクセスしているエンドポイントのドメインと、設定を変更しているドメインが一致しているか必ず確認する。
単純なミスですが、思い込みで作業をしていると気づくのに時間がかかります。 同じような現象に悩んでいる方の参考になれば幸いです。