【问题标题】:Rewrite rule to simplify codeigniter url for REST api重写规则以简化 REST api 的 codeigniter url
【发布时间】:2014-10-05 09:13:54
【问题描述】:

我正在使用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 之外,有没有其他方法可以达到要求?

我不想做永久重定向。

非常感谢任何帮助。

【问题讨论】:

    标签: php .htaccess api codeigniter rest


    【解决方案1】:

    下面的路由规则应该会有所帮助:

    $route['v1/(:any)/(:any)'] = 'api/v1/$1/$2';
    

    如果将来 v1 应该像 v1、v2 一样发生变化,那么类似下面的内容会有所帮助:

    $route['v(:num)/(:any)/(:any)'] = 'api/v$1/$2/$3';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 2013-10-21
      相关资源
      最近更新 更多