
現象
自作のプログラムなどから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