[WordPress] REST APIで記事投稿しようとしたら401エラーとなる現象について

REST API, WordPress

現象

自作のプログラムなどからREST API経由でWordPressに記事投稿をする際に、401エラーが発生して投稿できなくなることがある。

PHPはサーバ上でCGIモードで動作している。

解決策

以下のように.htaccessファイルを編集する。

WordPressサイトの.htaccessは何も編集していなければ次のようになっている。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

「RewriteEngine On」の次の行に、「RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]」という行を追加する。

追加後のファイル内容は次のようになる。

# BEGIN WordPress
<IfModule mod_rewrite.c>
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]
</IfModule>
# END WordPress