您好我正在尝试在核心php
中创建REST API方法我创建了一个控制器类和方法类来根据引用
调用我的函数http://phppot.com/php/php-restful-web-service/
我的文件位于我的服务器的子文件夹中,我目前正在创建这个面临访问重写URL的问题,下面我如何解决这个问题是我试过的htaccess规则。
RewriteEngine on
RewriteBase /test/rest/
# map neat URL to internal URL
RewriteRule ^/test/rest/mobile/list/$ /test/rest/RestController.php?view=all [nc,qsa]
RewriteRule ^/test/rest/mobile/list/([0-9]+)/$ /test/rest/RestController.php?view=single&id=$1 [nc,qsa]
答案 0 :(得分:1)
问题在于模式,因为没有前导斜杠,请参阅Per-directory Rewrites
每个目录重写
- ...
- 删除的前缀始终以斜杠结尾,这意味着匹配对于从不具有前导斜杠的字符串。因此,带有^ /的模式在每个目录上下文中永远不会匹配。
所以要解决此问题,请删除模式中的前导斜杠
RewriteRule ^test/rest/mobile/list/$ /test/rest/RestController.php?view=all [NC,QSA]
RewriteRule ^test/rest/mobile/list/([0-9]+)/$ /test/rest/RestController.php?view=single&id=$1 [NC,QSA]
不相关,但在这种情况下您不需要RewriteBase
,因为您已经使用了绝对替换网址。
此外,如果您希望请求具有查询字符串,则仅需要QSA|qsappend
。
答案 1 :(得分:0)
尝试以下代码
RewriteEngine on
RewriteBase /test/rest/
RewriteRule /(.*)/ RestController.php?view=$1
RewriteRule /(.*)/(.*)/ RestController.php?view=$1&id=$2
答案 2 :(得分:-1)
我使用重写网址工具
获得了解决方案