mod重写为干净的API端点

时间:2013-07-09 09:45:56

标签: php mod-rewrite

我已经建立了一个休息api,结束点是

/var/www/site/restapi/v1

现在在虚拟主机配置中,我设置了类似

的内容
Alias /api/v1 /var/www/site/restapi/v1

所以,如果我使用网址 http://site.com/api/v1它回退到/restapi/v1

中的index.php文件

但是API调用可以是as http://site.com/api/v1/Auth/login并处理我将.htacess置于/restapi/v1内作为

RewriteEngine On
RewriteRule ^(.*)/(.*) index.php?resource=$1&method=$2

它不起作用。我做了一些研究,发现在虚拟主机配置中我改变了

Options Indexes FollowSymLinks MultiViews

Options Indexes FollowSymLinks

然后它可以工作,但问题是当我使用GET获取资源然后它变成

"Auth/login"

如何添加clean api url而无需删除MultiView并使用

重写
index.php?resource=$1&method=$2

1 个答案:

答案 0 :(得分:1)

如果我理解正确并且问题是$resource也包含方法,那么尝试更改第一个捕获组

RewriteRule ^([^/]+)/(.*) index.php?resource=$1&method=$2 [QSA]

或改为使用延迟匹配(.*?)。

我不知道为什么MultiView会发生冲突;可能你有一些名字冲突的其他文件。可能在提高详细程度后检查日志文件。