子文件夹

时间:2017-03-23 06:17:23

标签: php .htaccess

您好我正在尝试在核心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]

3 个答案:

答案 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)

我使用重写网址工具

获得了解决方案

http://www.webconfs.com/web-tools/url-rewriting-tool/