我正在使用https://github.com/chriskacerguis/codeigniter-restserver REST控制器库在codeigniter中编写REST api。我在application/controllers/api/v1
内写了我的控制器并覆盖了Router类,允许控制器内有多个子文件夹。
现在我想要访问这些服务 http://api.domain.com/v1/user/11代替 http://api.domain.com/api/v1/user/11
我尝试过遵循htaccess规则
RewriteCond %{HTTP_HOST} ^api\.domain\.com$
RewriteCond %{REQUEST_URI} !index.php/
RewriteRule ^(.*)/?$ /index.php/api/$1 [QSA,L]
但它似乎无法正常工作,因为$ _SERVER全局变量中的REQUEST_URI设置为v1/user/11
而不是api/v1/user/11
,因此codeigniter无法找到控制器。
除了在index.php中设置更改REQUEST_URI之外,有没有办法达到要求?
我不想进行永久重定向。
非常感谢任何帮助。
答案 0 :(得分:2)
以下路线规则应该有所帮助:
$route['v1/(:any)/(:any)'] = 'api/v1/$1/$2';
如果将来v1应该像v1,v2一样改变,那么下面的内容会有所帮助:
$route['v(:num)/(:any)/(:any)'] = 'api/v$1/$2/$3';