-1

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

/var/www/site/restapi/v1

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

Alias /api/v1 /var/www/site/restapi/v1

所以如果我使用网址 http://site.com/api/v1它会退回到里面的 index.php 文件/restapi/v1

但是 API 调用可以是
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"

如何添加干净的 api url 而不必删除 MultiViews 并使用重写

index.php?resource=$1&method=$2
4

1 回答 1

1

如果我理解正确并且问题还$resource包括该方法,请尝试像这样更改第一个捕获组

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

或改用惰性匹配 ( .*?)。

我不知道为什么 MultiViews 会发生冲突;可能您还有其他一些名称冲突的文件。检查您的日志文件,可能在增加详细级别之后。

于 2013-07-09T10:09:38.987 回答