サーチコンソールで“他の4xxの問題が原因でブロックされました”が「admin-ajax.php」に出る!

他の4xxの問題が原因でブロックされました-admin-ajax_eyecatch

以前サーチコンソールで「他の4xxの問題が原因でブロックされました」という理由が出たので、調べると「/admin-ajax.php」でした。

WordPressでは「/wp-admin/admin-ajax.php」のクロールが許可されているので、もしクローラに見つかるとインデックス除外の項目にこれが出現します。

無視で良いのですが、気になる方がいそうなのでこの内容について解説します。

admin-ajax.phpはAjaxという仕組み(非同期通信)に必要なファイルです。

他の4xxの問題が原因でブロックされましたがajaxに出る

先日Googleサーチコンソールを確認していると見慣れない文字を発見しました。
その内容が以下の通り。

他の 4xx の問題が原因でブロックされました
これらのページはインデックス登録されていないか、Google で配信されません

他の4xxの問題が原因でブロックされました-admin-ajax_001

Google Search Console>ページ>ページがインデックスに登録されなかった理由

該当のページ数は1ページ。さっそく内容を確認します。

他の4xxの問題が原因でブロックされました-admin-ajax_002

「サイトURL/wp-admin/admin-ajax.php」が該当ページ

すると

サイトURL/wp-admin/admin-ajax.php

に4xxのエラーが出ており、クロール時にブロックされました!との内容が。
ちなみに400番台のエラーは要求エラーです。

ここで先に結論を書くと、このエラーの対処法は以下の2つどちらかです。

  1. 「/wp-admin/admin-ajax.php」に関する項目は無視する
  2. robots.txtで「/wp-admin/admin-ajax.php」へのクロールを制限する

この記事はじっくり解説なのでめんどくせぇ!!と思う人は①の無視で大丈夫です。
WordPressの仕様上このエラーが出るのは普通ですので。急がない人は是非読んで!

僕の場合はちょうど先日、WordPressでAjaxを使うことがあったので理由がすぐに分かり無事に解決できたのですが、サーチコンソールだけを見るとAjaxを知らない人にはなかなか酷な情報量で詰まりそうな感じがします...。

そんなこんなで記事にしようと思いました。では参りましょう・w・

admin-ajax.phpとは?

どこまで伝わるか分かりませんが、先ずはAjaxについて。
Ajax(エイジャックス)とは、javaScript(jQuery)を使ってページをリロードすることなく、サーバーとデータをやり取りする仕組みです。

WordPressでは、このAjaxがデフォルトの状態で使えるようになっています。

WordPressはPHPをメインに動いていますが、JavaScriptも使われています。
ここでPHP(サーバーサイド)⇔JavaScript(クライアントサイド)でデータのやり取りが必要になった時、データの送受信にページのリロードが必要になります。

で、任意のプログラムを動かすために“「ココ」をクリックして更新して下さい!”
なんてサイト上には書けないわけで、書いても誰も更新なんかしてくれないわけで...そこで必要になるのがAjaxです。

Ajaxを使えばいちいちユーザーに操作を要求する必要がなくなるという訳です。
しかも非同期的に処理されるので、ページの閲覧が中断されることもありません。

サーチコンソールに出ている「サイトURL/wp-admin/admin-ajax.php」というのは、WordPressでAjaxを使う時の送信先(エンドポイント)になります。

「/admin-ajax.php」というファイルは、特にプラグインなんかで複雑な処理をするときに必要になるファイルなのです。

スポンサーリンク

WordPressではadmin-ajax.phpのクロールが許可される

続いて、WordPressのクローラーへの設定について。
WordPressにはクローラーを制限するrobots.txt内に以下の記述がデフォルトの状態で入るようになっています。

 robots.txt
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

こんな感じです。この意味ですが、

1行目が全てのユーザーエージェント(全ユーザー)に対して。
2行目が「wp-admin」フォルダ以下のクロールを制御(禁止)する設定。
3行目が「/wp-admin/admin-ajax.php」だけはクロール許可

という記述になります。
つまりWordPressは「/wp-admin」以下のファイルで唯一「admin-ajax.php」だけはクロールを許可する設定にしてあるのです。

robots.txtの確認方法

ちなみにrobots.txtは設置場所が決まっているので、

サイトURL/robots.txt

にアクセスすれば簡単に確認することができます。

他の4xxの問題が原因でブロックされました-admin-ajax_003

WordPressサイトのrobots.txtの例

当サイトを例にするとこんな感じですね。

「サイトURL/wp-admin/admin-ajax.php」はAjaxを使う時に使用されるファイルなので、別にクロールされる必要はないのですが、Ajaxを使ったプラグインに不具合が出ないようにしてるあるのでしょうか?これは正直よく分かりません...。

なぜadmin-ajax.phpが発見されるのか?

先述の通り、WordPressサイトなら「/wp-admin/admin-ajax.php」自体のクロールは一応許可されているのですが、一般的には公開されていないファイルです。

つまりどのページからもリンクされておらず、独立したURLなはずです。
なのになぜクローラーに見つかるのか?

他の4xxの問題が原因でブロックされました-admin-ajax_004

参照元ページが当サイトの記事ページになっている

改めてサーチコンソールで「参照元」を調べてみると、参照元は当サイトの記事からになっていました。つまり記事から「/wp-admin/admin-ajax.php」にクローラーが飛んできたわけです。

恐らくですが「/wp-admin/admin-ajax.php」がクローラーにクロールされてしまう原因はAjaxを使ったプラグインまたはテーマです。
当サイトはキャッシュプラグインでAjaxを使っているので、クローラーが訪問した時にAjaxが使われ、それを辿られたのでしょう。

対処法1.admin-ajax.phpの項目は無視する

「/admin-ajax.php」に「他の4xxの問題が原因でブロックされました」が出ているなら無視しても何の問題もありません。無視が対処法と呼べるのかは怪しいですが...。

ここまで解説した通り、WordPressサイトで「~/wp-admin/admin-ajax.php」にクローラーが訪問し、4xxエラーでインデックス出来ないのは普通です。

「/wp-admin/admin-ajax.php」ファイルは、ブラウザで開くというよりプログラム内で使うファイルです。なので、普通に開けば400エラーが返されます。

他の4xxの問題が原因でブロックされました-admin-ajax_005

「当サイトURL/wp-admin/admin-ajax.php」にアクセスした様子

実際にブラウザでアクセスするとしっかり400(Bad Request)が返ってきています。
またAjaxで使う場合も、データと共にアクション名を一緒に送信しないとやはり400(Bad Request)が返ってきます。

何が言いたいのかというと、セキュリティー上400(Bad Request)エラーが出るのは当然のことなのです。つまりサーチコンソールの内容は無視してOK!

SEOにもセキュリティーにもプラグインにも何の影響もありません。

対処法2.robots.txtでクロールを制限する

“他の4xxの問題が原因でブロックされました”が出続けるのがイヤ!
影響がないとしてもやっぱり気になる!!

という方はrobots.txtを編集して、クロール設定を変更しましょう。

他の4xxの問題が原因でブロックされました-admin-ajax_006

サーバー上の「robots.txt」を編集する

既に書きましたがrobots.txtの設置場所は決まっており、サーバーの公開ディレクトリ(public_htmlなど)の中にあるはずなので、これを編集しましょう。

参考

当記事をお読みの方でrobots.txtが存在しないという人はいないと思いますが、無い場合はrobots.txtという名前のテキストファイルを新しく作ればOKです。

編集方法は「Allow: /wp-admin/admin-ajax.php」の部分を消すのも良いですが、

 robots.txt
User-agent: *
Disallow: /wp-admin/
#Allow: /wp-admin/admin-ajax.php
~省略~
Sitemap: https://sologaku.com/sitemap.xml

として「Allow: /wp-admin/admin-ajax.php」の先頭に#を付けてコメントアウト化するのもスマートだと思います。

やることは簡単で、WordPressで標準出力されてしまうadmin-ajax.phpのクロール許可を解除して制限するだけです。(/wp-admin/以下のクロール制限は残すこと)

プラグインに悪影響が出るのでは?とも思ったのですが、robots.txtはクローラー向けのファイルなので、WordPressのプラグインで使っているとも思えません...
「/wp-admin/admin-ajax.php」をクロールさせる必要はないと思うのですがね~

当サイトは何の問題も出ていませんが、何かおかしくなったら戻して下さい。

作業後はサーチコンソールで「修正を検証」しておこう!

robots.txtを書き換えたら一応サーチコンソールの方で報告しておきましょう。

他の4xxの問題が原因でブロックされました-admin-ajax_007

Google Search Console > ページ > 他の4xxの問題が原因でブロックされました > 「修正を検証」

から報告しておけば若干結果の反映が速くなるかもです。



まとめ

以上、Googleサーチコンソールの「他の4xxの問題が原因でブロックされました」という理由に「/wp-admin/admin-ajax.php」が出た時の対処法と解説でした。

ポイント

  • 「admin-ajax.php」はWordPressのAjaxを使う際に必要なファイル
  • サーチコンソールに「admin-ajax.php」が出るのはWordPressの仕様
  • 無視しても何の問題もないが、robots.txtでクロール制限することも可能

まぁ予想していた通り大半がAjaxと「/admin-ajax.php」の説明になりました...。
長々書きましたが、同じ内容で悩んでいた方がスッキリできたなら幸いです。

最近やりたいことがあって勉強したAjax...結局使いませんでしたw
けどこの記事につながったので良しとします。ではではこのへんで・w・

-WordPress
-

site-logo
ありがとうございました!
良かったらシェアしてネ・w・
当サイトはピンバックを受け付けます。
  • この記事を書いた人
ザキ

ザキ

X:@sologaku

プログラミングに興味があり情報系の大学を卒業。

新卒で社会人になるも数年で退職し今はフリーランスとして生きています。

少しでも誰かの役に立てれば...と思い、当サイトでIT関係のハウツーを発信しています。


ソロ学運営者:ザキの自己紹介

© 2020 sologaku