在使用 Amazon Lightsail 的 WordPress Multisite 时,我在尝试使用 REST API 发布文章时遇到了问题,所以我修改了设置并撰写了一篇相关文章

在AWS上建立WordPress环境,可以选择使用Lightsail非常方便。
Amazon Lightsail的WordPress Multisite
WordPress通过Bitnami(将Web服务打包提供的工具)提供,并且非常容易安装。
此外,WordPress的Multisite功能可以在一个引擎上创建多个网站,
非常适合想要进行一些WordPress实验、调整主题等情况。
然而,它似乎默认不支持REST API,并且解决方法也很少,导致我陷入了泥沼,因此我留下了这份备忘录。

我想做的事情

我想在WordPress上实现自动发布时,想要使用REST API进行调用。

我绊倒了

在使用Python编写的REST API中,尽管在另一个环境中能够正常运行,但在Lightsail环境中却出现了错误。

错误的原因

如果在.htaccess文件中没有以下记录,WordPress将不会接受。

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

The content mentioned above

    • 設定ファイルを開く(それで三行ほど追記)

 

    • apacheを再起動

 

    って流れです。

有关配置文件的修改

添加的代码

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

追述后的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文件的文件。
这次的错误似乎是由于认证系统被阻止了。
因此,我们修改了通过认证系统的设置,以使其按预期运行。

作为一种技术手段,可以通过修改Bitnami的设置来使用.htaccess,但是根据Bitnami的理念,使用httpd-app.conf来管理比.htaccess更安全,因此这次我们根据这个理念修改了配置文件。

追加记录

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

据悉,据说这里记录了关于如何接收HTTP:Authorization的内容
(因为没有进行仔细的调查,所以解释可能有点随便)
由于缺少这个设置,从Bitnami上的WordPress进行的投稿似乎是未经认证的。
通过更改这个设置,认证通过后可以进行投稿。

bannerAds