在Yii2

时间:2015-05-20 11:23:37

标签: nginx yii2

我有一个包含不同API的域名。我需要能够调用类似这样的东西

http://www.mydomain.xx/api1/v1/controller/action

http://www.mydomain.xx/api2/v1/controller/action

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

如何在不创建不同映射的sub-domanis的情况下访问它们?

1 个答案:

答案 0 :(得分:0)

将其写为解决方案:您可以使用full URL in the route

[
   'http://www.mydomain.xx/api1/v1/<controller>/<action>' => 'api1module/<controller>/<action>',
   'http://www.mydomain.xx/api2/v1/<controller>/<action>' => 'api2module/<controller>/<action>',
]

这假设您将包含的API定义为单独的模块。

根据您的评论:
如果您使用的是不同的域,那么在配置文件中设置变量并使用它可能很方便:

$domain = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'http://www.mydomain.xx/';

然后你也可以提取更多的变量:

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

在您的控制器中,您可以获取api类型和版本:

public function actionApiAction($api, $version) 
{
    // ...
}

可能性足够,取决于你想要什么。