我正在尝试从我的 Apache 文档根目录之外的单独目录运行版本化 API。
我目前的方法是使用Alias 指令进行尝试:
Alias /api/v1.2/ /var/www/api-v1.2/
Alias /api/v1.1/ /var/www/api-v1.1/
这工作正常,但是我使用的是 PHP 框架(Codeigniter),它使用 mod_rewrite 将所有请求路由到我的 index.php 前端控制器:
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/?$1 [L]
我可以通过 URL 访问实际文件,并且 alias 指令可以正常工作。当我访问系统打算重写的 URL 时,请求是从文档根目录提供的。
如何让我的 CI 应用程序遵循别名规则,同时仍将流量路由到每个相应的前端控制器?
编辑:需要明确的是,我的 CI 代码库有 3 个独立版本:1 个在 Apache 文档根目录中,另外 2 个在每个别名目录中。我想根据 URL 将请求路由到正确版本的代码库(如果没有匹配别名,则默认为 doc root)。
/var/www/html (doc root)
/var/www/api-v1.2
/var/www/api-v1.1