所以我最近使用Docker安装了WordPress,它是Docker文档(https://docs.docker.com/compose/wordpress/)中一个简单的填空组合文件。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE:
MYSQL_USER:
MYSQL_PASSWORD:
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER:
WORDPRESS_DB_PASSWORD:
volumes:
db_data:
它正在运行。那部分很好,但是当我前往http://siteurl/wp-json
时,我得到了404.网站工作正常,但REST API无法访问。我在WAMP上运行了另一个站点,当我到达该地址时,它弹出:
{
"name": "localhost:8090",
"description": "Just another WordPress site",
"url": "http://localhost:8090/wordpress",
"home": "http://localhost:8090/wordpress",
"gmt_offset": "0",
"timezone_string": "",
"namespaces": [
"oembed/1.0",
"wp/v2"
],
...
这两个网站都运行4.8。在Docker上运行WordPress时如何访问REST API?我通常使用Docker在本地开发,并且不记得这是一个问题。
(作为旁注,我发布了Bitnami发布的一个WordPress容器,并且没有问题得到正确的响应。所以这是...官方WordPress图像的问题?可能是图像的底层堆栈?我可以使用它,但我真的,真的,非常想知道问题是什么,因为我已经看到类似的问题出现在我的伙伴们身上了)
答案 0 :(得分:20)
事实证明,这与您网站的永久链接设置有关。将网站设置为使用自定义固定链接设置时,/wp-json/wp/v2
端点可用。如果我使用/%post%/
永久链接结构,它可以工作。对于使用其他固定链接结构的站点,还有另一种方法:
在没有相当固定链接的网站上,路由会被添加到URL作为rest_route参数。对于上面的示例,完整的网址将为http://example.com/?rest_route=/wp/v2/posts/123
来源:https://developer.wordpress.org/rest-api/extending-the-rest-api/routes-and-endpoints/
事实上,?rest_route=/wp/v2/posts
似乎始终有效,使其成为更可靠的选择。
答案 1 :(得分:1)
我在Docker上运行时遇到了同样的问题 解决方案是: 在AdminPanal =>设置->永久链接->从'默认'更改为'帖子名称'