0
0

More than 1 year has passed since last update.

Amazon Lightsail の WordPress Multisite で REST API で投稿しようとしたらつまづいたので設定を直した、って記事

Posted at

AWSで構築するWordPress環境としてLightsailって便利な選択肢があります。
Amazon Lightsail の WordPress Multisite
WordPressがBitnami(というWebサービスをパッケージ化して使えるようにするもの)で
提供されていて、導入がめちゃくちゃ楽です。
また、WordPressのMultisiteでは、一つのエンジンでいくつものサイトを作れるので、
ちょこっとWordPressの実験をしたい、テーマのアレコレをいじってみたい、
なんてときに便利だったりします。
が、REST APIをデフォルトで受け付けない仕様らしく、
対処方法もマイナーすぎて泥沼にはまり込んだのでメモを残します。

やりたかったこと

WordPressへ自動投稿をするのにあたり、REST APIをつつきたかった。

つまづいたこと

Pythonで書いたREST APIでの投稿が、別の環境では通るのに、
Lightsailではエラーになった。

エラーってた理由

.htaccessに下記の表記がないとWordPressが受け付けてくれない。

.htaccess
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

沼ってた理由

BitnamiのWordPressには.htaccessがファイルとして存在しない。
※同等の機能があるけど、違う形式のファイルになってる

そのファイルが何であるのかと、どう直せばよいのかを把握するのに時間がかかった。

結論から書くと、次のリンク先のページに今回の解決方法の解があります。
この記事は、そのページのリライトに近い内容です(書くと覚えるから)。
WordPress REST APIを使用して記事を投稿する

手順

概要

$ sudo nano /opt/bitnami/apps/wordpress/conf/httpd-app.conf
$ sudo /opt/bitnami/ctlscript.sh restart apache

上記の内容は

  • 設定ファイルを開く(それで三行ほど追記)
  • apacheを再起動
    って流れです。

設定ファイルの修正について

追加したコード

httpd-app.conf
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

追記後のhttpd-app.conf の全文

httpd-app.conf
<IfDefine USE_PHP_FPM>
    <Proxy "unix:/opt/bitnami/php/var/run/wordpress.sock|fcgi://wordpress-fpm" timeout=300>
    </Proxy>
</IfDefine>

<Directory "/opt/bitnami/apps/wordpress/htdocs">
    Options +MultiViews +FollowSymLinks
    AllowOverride None
    <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>



    <IfDefine USE_PHP_FPM>
       <FilesMatch \.php$>
         SetHandler "proxy:fcgi://wordpress-fpm"
       </FilesMatch>
    </IfDefine>

# https://www.premium-tsubu-hero.net/worpdpress-restapi-post01/
# for wordpress rest api
# 2023/07/29
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

   RewriteEngine On
   RewriteBase /
   RewriteRule ^index\.php$ - [S=2]

   # uploaded files
   RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . index.php [L]

    Include "/opt/bitnami/apps/wordpress/conf/banner.conf"
</Directory>

Include "/opt/bitnami/apps/wordpress/conf/htaccess.conf"

解説

httpd-app.confはBitnamiが.htaccess代わりに読み込んでいるファイルです。
今回のエラーは認証系がブロックされてしまっていたのが理由らしいです。
そこで、認証系を通す設定を変え、期待する動きになるようにしたのが今回の修正です。

手法としては、.htaccessを利用するように
Bitnamiの設定を変えることもできるのですが、
Bitnamiさんの思想として、.htaccessよりもhttpd-app.confとして、
管理したほうが安全だろうよ、というのがあるらしく、
今回はその思想に合わせて設定ファイルを直しました。

追記した

httpd-app.conf
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

ではHTTP:Authorizationを受け取るよって内容が書いてあるらしく
(ちゃんと調べてないのでいいかげんな説明)
これがないばっかりにBitnami上のWordPressからは
無認証で投稿しているように見えてみたようです。
この設定変更で、認証が通り投稿されるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0