我必须用PHP创建一个API,这是我以前从未做过的。我在包含表单的根文件夹中有一个index.php。单击按钮将激活AJAX请求以读取所有条目,并且可以填写表格以发送数据。我还将有DELETE和更新。
ajaxcall.js
// GET to retrieve
var req;
req=new XMLHttpRequest();
req.open("GET", 'src/api/v1/posts',true);
req.send();
//post with ajax
$.ajax({
type:"POST",
url: "src/api/v1/posts",
data: test,
ContentType:"application/json",
success:function(){
alert('successfully posted');
},
error:function(){
alert('Could not be posted');
}
});
我在其中有一个文件夹src / api / v1,我想要处理不同请求的终结点文件api.php。现在,我需要将所有AJAX调用重新发送到位于该v1文件夹中的api.php。我创建了一个.htaccess文件,该文件也存储在src / api / v1中。我添加了以下内容:
.htaccess
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule src/api/v1/(.*)$ src/api/v1/api.php?request=$1 [QSA,NC,L]
不幸的是,我没有找到404,它似乎没有将URL重写为api.php,因此它正在查找不存在的/ posts。我究竟做错了什么?
答案 0 :(得分:1)
实际上,您应该将.htaccess
存储在根目录中,否则Apache将不知道.htaccess
下有一个/src/api/v1
,因此apache将查找目录src/api/v1/posts
并没有找到404错误。
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule src/api/v1/(.*)$ /src/api/v1/api.php?request=$1 [QSA,NC,L]
</IfModule>