Nginx 在Yii2中使用不同的控制器文件夹

Nginx 在Yii2中使用不同的控制器文件夹,nginx,yii2,Nginx,Yii2,我有一个具有不同API的域。我需要能打电话给这样的人 我正在使用nginx,我正在将根目录映射到/var/www/myapp/web,我有API的文件夹以及与web文件夹并行的后端和前端文件夹 如何在不创建不同映射的子域的情况下访问它们?将其作为解决方案编写:您可以使用 然后您还可以提取更多变量,或许: [ "$domain/<api:(api1|api2)>/<version>/<controller>/<action>' =>

我有一个具有不同API的域。我需要能打电话给这样的人

我正在使用nginx,我正在将根目录映射到/var/www/myapp/web,我有API的文件夹以及与web文件夹并行的后端和前端文件夹


如何在不创建不同映射的子域的情况下访问它们?

将其作为解决方案编写:您可以使用

然后您还可以提取更多变量,或许:

[
   "$domain/<api:(api1|api2)>/<version>/<controller>/<action>' => '<controller>/<action>',
]

可能性足够大,这取决于您想要什么。

yii路由也可以包含完整的url,而不仅仅是控制器/操作。['http://'。$\u SERVER['http_HOST']./api1///'=>'/',]我将其更改为此,但我不知道如何将此配置数组添加到规则数组中,它似乎需要某种键,如“控制器”或“后缀”,能否提供包含此内容的规则数组的配置?除非是模块名,否则值中不能包含3个部分,因此
/
不是有效的路由。只需使用
/
<代码>(如果您需要)将通过
\Yii::$app->request->GET('version')
$\u GET
中提供,或者作为操作函数'urlManager'=>['enablePrettyUrl'=>true,'showScriptName'=>false,'rules'=>[[['http://'.$\u SERVER['http://'.]./api/v1/'=>'api/v1/']]]这就是它看起来的样子,它不起作用,因为我似乎需要向阵列添加一个键。另外:路由部分(在=>之后)要么是
“/”
要么是
“/”
。请看我的示例。该值应始终是有效的内部路由。
$domain = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'http://www.mydomain.xx/';
[
   "$domain/<api:(api1|api2)>/<version>/<controller>/<action>' => '<controller>/<action>',
]
public function actionApiAction($api, $version) 
{
    // ...
}