我正在使用 https://github.com/chriskacerguis/codeigniter-restserver 在 codeigniter 中编写一个 REST api REST Controller 库。我已经在 application/controllers/api/v1
中编写了我的 Controller ,并重写了 Router 类以允许 Controller 内有多个子文件夹。
现在我想访问这些服务 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 无法找到 Controller 。
除了在 index.php 中设置改变 REQUEST_URI 之外,还有什么方法可以达到要求吗?
我不想做永久重定向。
非常感谢任何帮助。
最佳答案
下面的路由规则应该有所帮助:
$route['v1/(:any)/(:any)'] = 'api/v1/$1/$2';
如果将来 v1 应该像 v1、v2 那样改变,那么类似于下面的内容会有所帮助:
$route['v(:num)/(:any)/(:any)'] = 'api/v$1/$2/$3';
关于php - 重写规则以简化 REST api 的 codeigniter url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25261966/