経験知ロゴ

WordPress Rest Apiで401や403エラーが出て認証できない時の対処法

WordPress Rest Api

WordPressのRest Apiで認証すると、サーバによっては401エラーや403エラーが出る場合があります。

.htaccessに認証関連の記述を追加したところ、無事に認証が通りましたので紹介します。

2パターンあるので、最初の方法で通らなかった場合は次のパターンを試してみてください。

認証用環境変数の追加

.htaccessのWordPressのリライトルールに下記を追加。

RewriteRule .* – [E=REMOTE_USER:%{HTTP:Authorization}]

WordPress部分の全体はこのようになる。

# BEGIN WordPress

RewriteEngine On
RewriteRule .* – [E=REMOTE_USER:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

ヘッダ情報が削除されてしまうサーバの場合

Authorization ヘッダが取得できないサーバはこちらの方法で解決できます。

XSERVER系は Authorization ヘッダが取得できないようで、僕が使っているシン・レンタルサーバもこの方法で解決できました。

.htaccessのWordPress部分の上に下記項目を追加。


RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

全体的にはこんな感じになる。


RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

403エラーが出る場合

403エラーが出る場合は、そのURLのアクセスが禁止されているというエラー。

海外IPアドレスからのアクセスを遮断しているサーバなどで起きます。

使っているサーバによって設定方法が違うので、IPアドレスなどによるアクセス遮断を外してください。

XSERVER系のレンタルサーバーなら、サーバーパネルを開き「WordPressセキュリティ設定」をクリック。
WordPressセキュリティ設定

設定したいドメインの「選択する」をクリック。
設定を選択

「REST APIアクセス制限」を「OFFにする」を選択し、「設定する」をクリック。
REST API アクセス制限

これで設定完了です。

おわりに

開発環境や別のレンタルサーバでは普通に認証が通っていたので、原因究明に時間がかかりました。

REST API は一筋縄ではいかないので所々躓いています…。

役に立ったらこの記事のシェアをお願いします

ブログのフォロー・RSS購読は下記ボタンから