我尝试使用 mod_rewrite 在 php 中编写一些 REST API。
我的问题是:
如何处理 HTTP DELETE 和 PUT?
例如,网址为:
/书/1234
其中 1234 是一本书的唯一 ID。我想将此 id (1234) “重定向”到 book.php,并以 id 作为参数。我已经知道如何在 php 脚本中读取 PUT 和 DELETE 变量,但是如何在 mod_rewrite 中设置此重写规则?
有任何想法吗?
编辑:
GET 的重写规则如下所示:
RewriteRule book/([0-9]+) book.php?id=$1 [QSA]
如何为 PUT 和 DELETE 进行“参数转发”?据我所知,HTTP POST、PUT 和 DELETE 使用 HTTP 请求正文来传输参数值。所以我想我需要在HTTP请求体中附加参数。但我不知道如何使用 mod_rewrite 做到这一点。
我可以混合 DELETE 和 GET 吗?
RewriteCond %{REQUEST_METHOD} =DELETE
RewriteRule book/([0-9]+) book.php?id=$1 [QSA]
然后在 book.php 中,我将使用 $_GET['id'] 来检索图书 id,即使 HTTP 标头表明 HTTP 方法是 DELETE。这似乎不起作用......
有一个RewriteCond
指令可用。您可以使用它来指定以下规则仅在特定条件下有效。如果你想通过HTTP请求方式重写,可以这样使用:
RewriteCond %{REQUEST_METHOD} =PUT
RewriteRule ^something\/([0-9]+)$ put.php?id=$1
RewriteCond %{REQUEST_METHOD} =DELETE
RewriteRule ^something\/([0-9]+)$ delete.php?id=$1
# ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)