ConoHa WINGでREST APIが403に|原因と直し方
※本記事にはプロモーション(広告)が含まれています。
外部のプログラムからWordPressに記事を投稿しようとしたら、「403 Forbidden」で弾かれた。ネットで調べてUser-Agentを変えてみたけれど、何も変わらない。ConoHa WINGでWordPressを使っていて、こんな状態で止まっている方に向けた記事です。
この記事では、僕が実際にぶつかった「403 → 直したら今度は404 → 投稿成功(201)」の流れを、起きた順に書きます。原因はConoHa WINGの「海外アクセス制限」で、REST-APIの項目だけをOFFにしたら403は消えました。そのあと出た404は、WordPressのパーマリンク設定を保存し直したら直りました。
僕は移住前、都内でSEとして働いていて、今はこのブログの投稿をPythonで自動化しています。その作業中に実際につまずいた記録です。同じところで止まっている方が、どこを確認すればよいか分かるように書きました。
結論:403の原因は「海外アクセス制限」、404はパーマリンクの再保存で直った
先に結論をまとめます。
- 403の原因:ConoHa WINGのWordPressセキュリティにある「海外アクセス制限」。Google Colabのような海外のサーバーから届くREST APIへのアクセスが、WordPressに届く前に弾かれていました
- 403の直し方:コントロールパネルの海外アクセス制限で、「REST-API」の項目だけをOFFにする
- その後の404の直し方:WordPressの「設定」→「パーマリンク設定」を開いて、何も変えずに「変更を保存」を押す
僕の場合:ColabのPythonから投稿したら403が返ってきた
やりたかったのは、Google ColabでPythonを動かして、WordPressのREST API(/wp-json/wp/v2/posts)に記事を投稿することです。ところが、返ってきたのは「403 Forbidden」でした。
レスポンスの中身を見ると、WordPressが返すJSON形式のエラーではなく、Apacheのエラーページ(HTML)でした。スクリプトの書き方が悪いのか、サーバー側の問題なのかも分からず、しばらくモヤモヤしていました。
User-Agentを変えても直らなかった
403で検索すると、「User-Agentをブラウザと同じものにすると通る」という情報がよく出てきます。僕もPythonのリクエストヘッダーのUser-Agentをブラウザ風に書き換えてみましたが、結果は同じ403でした。
原因はColabが「海外のサーバー」だったこと
最終的に分かった原因は、ConoHa WINGの「海外アクセス制限」でした。Colabのプログラムは自分のパソコンではなく、Google側の海外のサーバーで動いています。そのため、サーバーから見ると「海外からREST APIにアクセスしてきた」と判断され、弾かれていたわけです。
元SEとしての切り分け方:403が「どこで」返っているかを見る
今回の件から言えるのは、「エラーの番号」だけでなく「誰がそのエラーを返しているか」を見ると原因を絞りやすい、ということです。
- WordPressが返すエラーは、
{"code": "rest_cannot_create", ...}のようなJSON形式になります。これならリクエストはWordPressまで届いていて、ユーザー名や権限など、WordPress側の問題を疑います - Apacheなどのエラーページ(HTML)が返ってくる場合は、WordPressに届く前、サーバーの手前で止められている可能性が高いです。この場合、プログラムやWordPressの設定をいくら直しても変わりません
僕の403はApacheのエラーページだったので、「WordPressより手前の、サーバー側の制限」を疑うのが近道でした。User-Agentを変えても直らなかったのも、制限の理由が「何を名乗っているか」ではなく「どこから来たか」だったからだと考えられます。
自分のパソコン(国内)からは通るのに、Colabやクラウド上の実行環境からだけ弾かれる、という場合は、同じ海外アクセス制限を疑ってみてください。
手順1:ConoHa WINGで「REST-API」の海外アクセス制限だけOFFにする
ConoHa WINGの公式サポートによると、海外アクセス制限は次の場所にあります(2026年11月時点)。
- ConoHaのコントロールパネルで「WING」を開く
- 左メニューの「サイト管理」→「サイトセキュリティ」を開く
- 上のタブから「WordPressセキュリティ」を選ぶ
- 「海外アクセス制限」の中にある「REST-API」を「OFF」にする
公式サポートの説明では、海外アクセス制限には「ダッシュボード」「XML-RPC-API」「REST-API」「wlwmanifest.xml」「Abilities API」の項目があり、初期設定では全項目がONです。項目ごとにON/OFFを切り替えられるので、僕はREST-APIだけをOFFにしました。これで403は出なくなりました。
REST-APIをOFFにするときの注意
この設定は、海外からREST APIへのアクセスを許すことになるので、セキュリティを少し緩めることになります。次の点は意識しておくと安心です。
- OFFにするのは必要な項目だけにする。外部から投稿したいだけなら、ダッシュボードやXML-RPCまで解除する必要はありません
- 公式サポートによると、この画面の設定はドメイン内のすべてのWordPressに適用されます。同じドメインで複数のWordPressを動かしている場合は、すべてに影響します
- 自動投稿をやめたら、ONに戻すことも検討する
手順2:次に出た404は、パーマリンク設定を保存し直したら直った
403は消えましたが、今度は「404」が返ってきました。
ここで効いたのは、WordPressの管理画面で「設定」→「パーマリンク設定」を開き、何も変えずに「変更を保存」を押すことです。これだけで、次の投稿では「201」が返ってきて、記事が作成されました。201は「リクエストが成功して、新しいデータが作られた」ことを表すステータスコードです。
なぜ404になっていたのか、はっきりした原因までは突き止めていません。/wp-json/ というURLはパーマリンク(URLの書き換え)の仕組みを使っているので、保存し直したことでその設定が整ったのかもしれませんが、確かめてはいません。「僕の場合はこれで直った」という記録として読んでください。
「WordPress REST API 404」の切り分けに使える方法
WordPressの公式ドキュメントによると(2026年11月時点)、パーマリンクの書き換えが使えない環境では、REST APIのURLを /wp-json/ の代わりに ?rest_route= というパラメーターで指定できます。
- 通常:
https://example.com/wp-json/wp/v2/posts - 代わりの書き方:
https://example.com/?rest_route=/wp/v2/posts
/wp-json/ だと404なのに ?rest_route= だと通るなら、REST API自体は動いていて、URLの書き換え側に問題がある、と切り分けられます。そのうえでパーマリンク設定を保存し直してみてください。
それでもダメなとき
ここまでやっても投稿できない場合は、レスポンスの中身で次のように見分けます。
- 403で「SiteGuard」の文字が出る:ConoHa WINGのWAF(SiteGuard Lite)に止められています。僕は画像のアップロードでこちらにも引っかかりました
- 401で「rest_cannot_create」が出る:WordPressのユーザー名やアプリケーションパスワードの問題です。僕の場合は、ユーザー名がひな形のままでした
- それ以外:セキュリティ系プラグインがREST APIを止めていないかも確認してみてください
ここまで見てきたように、ConoHa WINGには海外アクセス制限とWAF(SiteGuard)という2つのセキュリティ機能が用意されています。僕は自動投稿でどちらにも引っかかりましたが、どちらも管理画面から項目ごとに解除したり、除外したりできました。これからWordPressを始めるためにサーバーを探している方は、公式サイトで機能や料金を確認してみてください。
まとめ
ConoHa WINGでREST APIが403になったときに、僕がやったことをまとめます。
- 403の中身がApacheのエラーページなら、WordPressより手前で止められている
- Colabなど海外のサーバーで動く環境から投稿しているなら、「海外アクセス制限」を疑う
- 「サイト管理」→「サイトセキュリティ」→「WordPressセキュリティ」の海外アクセス制限で、REST-APIだけOFFにする
- 次に404が出たら、パーマリンク設定で「変更を保存」を押し直す
- 解除するのは必要な項目だけにして、使わなくなったらONに戻すことも考える
User-Agentを変えても直らないときは、「どこから来たか」で弾かれている可能性があります。同じところで止まっている方の参考になればうれしいです。






ディスカッション
コメント一覧
まだ、コメントがありません