Wordpress rest_api_init注册API后出现404错误的问题

记录一下开发wordpress插件过程中遇到的问题。

问题描述:wordpress前后端通过restapi进行交互,api注册后前端访问出现404错误

1. Wordpress plugin API 注册

add_action( 'rest_api_init', 'regsiter_api', 10 );

function regsiter_api()
{
    register_rest_route( 'plugin-slug/v1', '/options', array(
        'methods' => 'POST',
        'callback' => 'get_options',
     ) );
}

function get_options() {
   return 'hello world';
}

2. 用curl访问

curl --location --request POST 'http://localhost/wp-json/plugin-slug/v1/options'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   196  100   196    0     0  24669      0 --:--:-- --:--:-- --:--:-- 39200<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html> 

3. 问题原因, web服务器为自己搭建,未开启rewrite功能导致

4. 解决方案,开启rewrite功能,将 #LoadModule rewrite_module modules/mod_rewrite.so 注释去掉,重启apache

#LoadModule remoteip_module modules/mod_remoteip.so
#LoadModule request_module modules/mod_request.so
#LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule sed_module modules/mod_sed.so
#LoadModule session_module modules/mod_session.so
#LoadModule session_cookie_module modules/mod_session_cookie.so
#LoadModule session_crypto_module modules/mod_session_crypto.so

5. 验证,重新用curl访问,返回hello world

$ curl --location --request POST 'http://localhost/wp-json/plugin-slug/v1/options'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    13  100    13    0     0     20      0 --:--:-- --:--:-- --:--:--    20"hello world"
 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值