2024-04-10

WordPress REST APIからGoogle Apps Scriptでデータを取得しようとすると501 Not Implemented Errorになる場合の対処法【Xserver】

 

エンジニア赤司 達彦

こんにちは。リベルタエンジニアの赤司です。

WordPress REST APIを利用してGoogleスプレッドシートにデータを取り込もうとしたところ、501 エラーが表示されました。

知ってしまえば至極簡単な解決方法なのですが、発生当時はWordPress側の問題かと思い、REST APIの仕様を再確認したりと、いろいろ遠回りをして多少の時間を要してしまいました。

今回は、WordPress REST APIからGoogle Apps Scriptでデータを取得した時に501 Not Implemented Errorになってしまう場合の解決方法について、Xserverの場合をお伝えしていきます。

Google Apps Scriptで501 Not Implemented Error になる

Google Apps Scriptを利用して、WordPressのデータをREST APIを利用してGoogleスプレッドシートに取り込もうとすると、取得の際に「501 」というエラーが表示されました。

501なのでサーバー側のエラーであることは明らかなのですが、WordPress側のREST APIの問題なんじゃないかと思い、ここでREST APIの仕様を再度調べたりと、かなり遠回りをしてしまいました^^;

XserverのWAF設定が原因だった

結論を言うと、XserverのWAF設定が501 エラーの原因でした。

WAFは、Web Application Firewallのことでファイアウォールの設定のことをいいます。

アプリケーション自体にセキュリティ上の問題があっても、WAF設定を利用すればその脆弱性を回避できるというメリットから、近年のレンタルサーバーでは必ずと言って良いほど導入されいるものです。

今回は、WAFの中の「コマンド対策」をOFFにすることで、無事Googleスプレッドシートでデータを取得することができました。

XserverでWAFの「コマンド対策」をOFFにする設定方法を次でご紹介します。

XserverのWAFのコマンド対策をOFFにする方法

1. Xserverのサーバーパネルにログインし、「セキュリティ」の「WAF設定」をクリックします。

2. 「ドメイン選択画面」で該当のドメインを選択します。

「コマンド対策」のOFFにチェックを入れて設定を完了します。

この操作で、設定の反映が完了すれば501エラーが解消されます。

ファイアーウォール設定プラグインを導入する

サーバー側の「コマンド対策」をOFFにしましたので、WordPress側にもファイアーウォールプラグインを導入します。WordPressへのファイアーウォールプラグインの導入はあくまでアプリケーションレベルのものですので、完全にはサーバー側のファイヤーウォールの代替にはならないのですが、念のためセキュリティ強化の意味で導入します。

今回は、「BBQ Firewall」というプラグインを導入しました。

BBQ Firewallでは以下のセキュリティ機能をWordPressに導入できます。

  • SQLインジェクション防御
  • 実行可能ファイルのアップロード防止
  • ディレクトリトラバーサル攻撃防御
  • 安全でない文字リクエストブロック
  • 長過ぎるリクエスト防止
  • PHPリモート/ファイル実行防御
  • XSS/XXE攻撃防御
  • 悪質なボット防御
  • 悪質なリファラー防御
  • 悪質なPOSTコンテンツフィルタリング

501 Not Implemented Errorになる場合の対処法のまとめ

今回は、WordPress REST APIからGoogle Apps Scriptでデータを取得しようとすると501 Not Implemented Errorになる場合の対処法についてお伝えしました。

Google Apps Scriptで501エラーが返って来た時には、サーバーのWAF設定を疑ってみましょう。

Xserverでは、「コマンド対策」をOFFにするだけでREST APIからデータを取得できましたが、サーバーによっては他の項目をOFFにする必要もあるかもしれません。

弊社ではWeb制作やアプリ開発、SEO記事制作などの幅広い分野で、クライアントのビジネスを次のレベルへと導くための最適なソリューションを提供しています。

Webの施策でお困りの際には、ぜひ弊社へご相談くださいませ。