Php htaccess子文件夹中的重写规则

Php htaccess子文件夹中的重写规则,php,.htaccess,Php,.htaccess,嗨,我正在尝试在核心php中创建一个RESTAPI方法 我创建了一个控制器类和方法类来根据引用调用我的函数 我在我的服务器的子文件夹中有我的文件,我正在创建这个我在访问重写URL时面临的问题,如何解决下面的问题是我尝试的htaccess规则 RewriteEngine on RewriteBase /test/rest/ # map neat URL to internal URL RewriteRule ^/test/rest/mobile/list/$ /test/rest/RestC

嗨,我正在尝试在核心php中创建一个RESTAPI方法

我创建了一个控制器类和方法类来根据引用调用我的函数

我在我的服务器的子文件夹中有我的文件,我正在创建这个我在访问重写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]
请尝试下面的代码

RewriteEngine on
RewriteBase /test/rest/
RewriteRule /(.*)/ RestController.php?view=$1
RewriteRule /(.*)/(.*)/ RestController.php?view=$1&id=$2

问题在于模式,因为没有前导斜杠,请参见

每个目录重写

  • 删除的前缀总是以斜杠结尾,这意味着匹配发生在一个从来没有前导斜杠的字符串上。因此,在每个目录上下文中,^/从不匹配的模式
所以要解决这个问题,请删除模式中的前导斜杠

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]

不相关,但在本例中不需要重写基,因为您已经使用了绝对替换URL


另外,只有当您希望请求具有查询字符串时才需要。我使用重写URL工具获得了解决方案


您的.htaccess是否位于
/test/rest/
子目录中?不需要重写库,没有它就可以工作,谢谢您的回答