wp-admin以外でもBasic認証の表示が出る場合の対策

wp-adminにしかBasic認証をかけていないにも関わらず、フロント画面でもBasic認証のモーダルが表示されてしまう場合の対策を記載しておきます。

目次

原因:admin-ajax.phpへのアクセス

WordPressでは、プラグインなどが/wp-admin/配下のadmin-ajax.phpを利用して非同期通信(AJAX通信)を行うことがあります。

そのため、wp-adminにBasic認証を設定していると、フロント画面を表示した際にも認証モーダルが表示されるというわけです。

この場合、admin-ajax.phpのみBasic認証対象から除外することで解決します。

対処方法:.htaccessに追加

/wp-admin/.htaccessに以下を追加。

<Files "admin-ajax.php">
    Require all granted
</Files>

※エックスサーバーであれば、「FTP」>「FTPアカウント設定」の管理ボタンから直接編集可能です。

これにより、

  • 管理画面(wp-admin)はBasic認証で保護
  • フロント側のAJAX通信は正常動作

という状態になります。

追加した場合、こんな感じになります。

AuthUserFile "/home/xxx/xxx.com/htpasswd/wp-admin/.htpasswd"
AuthName "Member Site"
AuthType BASIC
require valid-user

<Files "admin-ajax.php">
    Require all granted
</Files>

確認方法

https://ドメイン/wp-admin/admin-ajax.php

へアクセスして、以下のいずれかであれば成功です。

  • モーダル出ない
  • 0 が表示される

フロントのモーダルも消えます。

まとめ

以上、よくあるBasic認証の誤表示の対策でした。

フロントに表示された場合、そのまま入力をキャンセルしても問題なくサイトは表示されますが、一般ユーザーであれば離脱の原因にもなりかねません。

wp-adminフォルダ単位でBasic認証をしている場合、あらかじめadmin-ajax.phpは除外しておいた方が良いと思います。

カスタマイズに困ったらお気軽にご相談を!

  • 「ちょっとしたCSSの調整だけお願いしたい」
  • 「不具合を直してほしい」

料金は3,000円〜、お支払いは銀行振込・Amazonギフトカードなど柔軟に対応してます🤔

役に立ったら他の方にシェア

お気軽にコメントどうぞ

コメントする

目次