在使用 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进行的投稿似乎是未经认证的。
通过更改这个设置,认证通过后可以进行投稿。