我可以在纯固定链接格式上使用REST-API吗?

时间:2017-07-12 作者:Johansson

最近,我所有的REST-API请求都突然返回404错误,每个请求(无论是自定义端点还是内置的)。

然后我想这是因为permalink的结构。/wp-json/ 在普通permalink下无法访问,因为目前根本没有可用的重定向规则。

在这种情况下是否可以使用REST端点?自定义和内置。

3 个回复
最合适的回答,由SO网友:kraftner 整理而成

是的,你可以。只需添加rest_route 查询参数。

所以

https://wordpress.org/wp-json/

将成为

https://wordpress.org/?rest_route=/

https://wordpress.org/wp-json/wp/v2/ 将成为https://wordpress.org/?rest_route=/wp/v2 给你一个更完整的例子。

所以你想知道如何决定使用哪一个?不用担心,这里有一个函数:get_rest_url()

另一种选择是,默认情况下<link> 在提供API根的标头中。

<link rel=\'https://api.w.org/\' href=\'https://wordpress.org/wp-json/\' />
因此,如果您需要从客户端JS了解这一点,只需使用以下内容

document.querySelectorAll(\'link[rel="https://api.w.org/"]\')[0].getAttribute(\'href\');
所以基本上你不应该wp-json 按照给定的部分(并对其进行硬编码),但始终使用get_rest_url() 或上述JS方法。

SO网友:northtree

您可以在web服务器上添加一个重写。

E、 g代表nginx

location ~ ^/wp-json/ {
    rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}

SO网友:Max Carroll

这个rest_route 查询参数是Ugly (Wordpress的选词不是我的)Permalink的风格。可以将permilink样式更改为Post name 如下面的屏幕截图所示wp-json 路由应在URL中完全可访问。这些Permlink样式中的其他样式可能会起作用,但是Post name 为我工作,除此之外我没有探索

Picture illustrating button clicks required to change settings

结束

相关推荐

How to replace permalinks

我已将wordpress项目导出并导入live server。现在的问题是,我将permalink结构作为“localhost”格式。当我单击网站中的任何链接时,它会将我重定向到localhost。我怎样才能改变这一点?我的htaccess文件如下所示<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /myproject/ RewriteRule ^index\\.php$ - [L] RewriteCo