php - 重写规则以简化 REST api 的 codeigniter url

标签 php .htaccess api codeigniter rest

我正在使用 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/

相关文章:

python - 在 tweepy 中回复推文

python - Python 中各种数据库的单一 API

php - Vagrant+Ubuntu 14.04+Nginx+HHVM = 缓慢+崩溃

php - 定义 ('WP_DEBUG' ,真);不显示错误

php - 通过 .htaccess 从 URL 剪切文件夹路径

apache - 使用查询字符串停止 .htaccess 重定向

php - 获取打开文档的总计(MySQL QUERY)

php - 当某些输入是 blob 并且必须在 PHP 中发送 send_long_data() 时,如何绑定(bind)不同数量的输入

regex - htaccess : alternative to using <if>?

java - 如何将 REST 请求的参数传递给 Java 方法?