現在、ちょっとした思い付きから、Wordpress へ記事を自動投稿してくれる
ツールを作成していますが、その最中につまづいた問題とその解決策について
備忘録として残しておきます。
発生した問題(ApplicationPasswordsプラグイン)
Application Passwords というプラグインを使用し、
WordPress API 実行用のユーザーのパスワードを作成しようとした際、
Wordpress のユーザー管理画面に以下のようなメッセージが表示され、
WordPress API の実行自体も失敗してしまう。
「Due to a potential server misconfiguration, it seems that HTTP Basic Authorization may not work for the REST API on this site: Authorization
headers are not being sent to WordPress by the web server. You can learn more about this problem, and a possible solution, on our GitHub Wiki.」
エラーメッセージとしては、
『サーバーの設定ミスの可能性があるため、このサイトのREST APIでは
HTTP基本認証が機能しない可能性があります。
認証ヘッダーがWebサーバーによってWordPressに送信されていません。
この問題の詳細と可能な解決策については GitHub Wikiをご覧ください。』
とのことでした。
言われたとおりに GitHub を確認したりググったりしてみた結果、
何とか解決まで至ることができましたので、その詳細について記載していきます。
|
|
問題の対処策
今回の問題については、Xserver 側のデフォルト設定によるもののようです。
そのため、Xserver の管理画面から、設定ファイルを編集し、
Basic 認証が正常に行われるようにしてやれば OK です。
実際の手順は以下です。
- XServer の管理画面へログイン
- .htaccess ファイルを修正
- WordPress上のエラーメッセージがなくなったことを確認
順を追って説明していきます。
XServer の管理画面へログイン
まずは以下のリンクから Xserver の管理パネルへログインしてください。
→ X Xserver ログイン画面
アカウントID(またはメールアドレス)とパスワードを入力し、
「ログイン」をクリックします。
次の画面では、WordPress で使用しているサーバの、
「サーバー管理」ボタンをクリックします。
Xserver の管理パネルへログインできたことを確認してください。
次に、WordPress で使用しているドメイン設定へ移動します。
管理パネルの左下にある「設定対象ドメイン」欄にて、
WordPress で使用しているドメイン(今回 API のエラーが発生しているドメイン)を
選択し、「設定する」を押下します。
これで、エラー対象ドメインの管理画面に移りました。
.htaccess ファイルを修正
管理パネル上の「ホームページ」メニューから、
「.htaccess編集」をクリックします。
「.htaccess編集」タブを選択してください。
.htaccess ファイルの内容を確認することができます。
ここから、.htaccess の内容を修正していきますが、
.htaccess ファイルは誤って編集してしまうと
サイトが表示されなくなる可能性もあるため、
編集前に必ず内容のバックアップをしておいてください。
Default では以下のような内容になっていると思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode # 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 |
これを修正して、以下のようにしてやります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode # 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 |
編集個所は、
“RewriteEngine On” の後に
“RewriteRule .* – [E=REMOTE_USER:%{HTTP:Authorization}]”
の行を追加しているところのみです。
修正が終わったら、「実行する」ボタンを押下し、
編集内容を保存します。
WordPress上のエラーメッセージがなくなったことを確認
ここまで作業できたら、
WordPress のユーザー管理画面に戻り、先ほどのエラー出力が
なくなっていることを確認します。
(F5キーなどで、画面を更新してから確認してください)
この状態で WordPress API を実行すれば、問題なく処理が進むはずです。
|
|
参考にしたサイト
当問題を解決するにあたり、以下のサイトを参考にさせていただきました。
ありがとうございました。
- 【Wordpress】Application Passwordsで何度やっても401(Unauthorized)が返ってくる[Qiita]
- Basic Authorization Header Missing[GitHub]
参考になれば幸いです^^
コメント