Apache 重定向REST服务的url

Apache 重定向REST服务的url,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我能够在某个ip地址访问我的网站,我将实施REST服务。我有一些在数据库上执行操作的PHP文件,我正在从客户端调用它们。我使用linux ubuntu作为服务器,目前为止我可以做到: http://xxx.xxx.xxx.xxx/api/create/?id=someId&val=someValue http://xxx.xxx.xxx.xxx/api/delete/?id=someId 我可以这样做,因为在/var/www/html中我有一个名为api的文件夹,其中包含另一个名为cr

我能够在某个ip地址访问我的网站,我将实施REST服务。我有一些在数据库上执行操作的PHP文件,我正在从客户端调用它们。我使用linux ubuntu作为服务器,目前为止我可以做到:

http://xxx.xxx.xxx.xxx/api/create/?id=someId&val=someValue
http://xxx.xxx.xxx.xxx/api/delete/?id=someId
我可以这样做,因为在/var/www/html中我有一个名为
api
的文件夹,其中包含另一个名为
create的文件夹。
create
包含index.php文件,因此我可以省略它并执行您可以在上面看到的URL

这很好,但我认为这不是正确的方法。我是新手,所以我不知道该怎么办。经过一些研究,我发现我的目标可能是通过
实现的。htaccess
文件使用url重写,但我不确定

我该怎么做?我是否必须将所有php文件放在一个文件夹中,然后使用htaccess文件?(^


^)更准确地说:不要这样做

http://xxx.xxx.xxx.xxx/api/create/index.php?id=someId&val=someValue
http://xxx.xxx.xxx.xxx/api/delete/index.php?id=someId
//and so on with other actions...
我必须创建一个像这样的文件夹吗

http://xxx.xxx.xxx.xxx/files/
包含我的所有php文件(create.php、delete.php、view.php…)和使用htaccess重定向

我看到网站使用
www.domain.com/api/something/?data=Value
www.domain.com/api/something/dataAbout/
提供api。他们在做我说过的关于.htaccess的事吗?我希望我已经很好地解释了我的问题

htaccess:

RewriteEngine On

RewriteRule ^api/([\w-]+)/?$ files/$1.php [L,NC]
这是在/var/www/html中,我在/home/username/api中有api


首先感谢Emma,这不是创建RESTFUL API的正确方法。我建议您阅读一篇最佳实践文章

您不应该创建创建和删除文件夹。您应该使用HTTP操作

要创建新记录,应使用POST。例如,
POST/user
并在正文中传递用户信息

在另一个示例中,您可以通过使用不同的HTTP方法来使用相同的路由:
DELETE/user/1
删除用户和
PATCH/user/1
编辑一些已经存在的用户信息

希望对您有所帮助。

这样做:

  • 在文件夹
    files/
    子目录中创建php文件,如
    Create.php
    delete.php
    view.php
    等(通过重命名您提到的每个
    index.php
    文件)
  • api
    目录移到站点根目录之外的某个位置
  • 完成后,在
    /var/www/html/
    中使用以下.htaccess文件:

    RewriteEngine On
    
    RewriteRule ^api/([\w-]+)/?$ files/$1.php [L,NC]
    
    然后将新URL用作:

    http://xxx.xxx.xxx.xxx/api/create?id=someId&val=someValue
    http://xxx.xxx.xxx.xxx/api/delete?id=someId
    

    非常感谢!:)所以我在/var/www/html/files/中创建php文件,并将php文件放在这里。然后我只需要应用.htaccess和。我说的对吗?我有/var/www/html/files/with-inside-create.php、delete.php等等。我还有/var/www/html/other/api,但它不起作用。htaccess文件正确吗?htaccess位于/var/www/html/Look我的评论上面。然后我找到了一个数字,但我有一个错误。我将在30分钟后再次检查:)现在我有/home/username/api文件夹和/var/www/html/files文件夹(文件中有view.php、create.php等)。不工作(ip是正确的,我可以看到index.html)。.htaccess位于/var/www/html文件夹中。有什么想法吗?我用“sudotouch/var/www/html/.htaccess”创建了htaccess,并用nano编辑了它。编辑被保存,文件是你告诉我的:)我知道了!非常感谢您的耐心:)我不得不编辑000-default.conf并添加“AllowOverride All”。重新启动apache,现在它就可以工作了。再次感谢你!