2017-04-12 97 views
0

我想知道如何Yii框架发送取决于在URL中传递的子域名的请求权控制器:Yii框架和DINAMIC子域

www.mysystem.com - >这个请求被默认处理我系统中特定模块的控制器。

但是当用户来访问他的商店时,他将使用URL:storename.mysystem.com。 (有很多不同的商店名称)

我想知道哪里在Yii我可以找到配置来设置哪个模块/控制器将处理此请求。

谢谢。

回答

0

这里是我的Yii2

配置

main.php

<?php 
$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'), 
    require(__DIR__ . '/../../common/config/params-local.php'), 
    require(__DIR__ . '/params.php'), 
    require(__DIR__ . '/params-local.php') 
); 

$host = (!empty($_SERVER['HTTP_HOST']))?$_SERVER['HTTP_HOST']:$_SERVER['SERVER_NAME']; 
$segments = explode('.',$host); 
defined('SUBDOMAIN') or define('SUBDOMAIN', strtolower($segments[0])); 

return [ 
    'id' => 'app-backend', 
    'basePath' => dirname(__DIR__), 
    'controllerNamespace' => 'backend\controllers', 
    'bootstrap' => ['log'], 
    'modules' => [ 
     SUBDOMAIN => [ 
      'class' => 'backend\modules\\'.SUBDOMAIN.'\\'.ucfirst(SUBDOMAIN), 
     ], 
    ], 
    'components' => [ 
     'request' => [ 
      'csrfParam' => '_csrf-backend', 
     ], 
     'user' => [ 
      'identityClass' => 'common\models\User', 
      'enableAutoLogin' => true, 
      'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true], 
     ], 
     'session' => [ 
      // this is the name of the session cookie used for login on the backend 
      'name' => 'advanced-backend', 
     ], 
     'log' => [ 
      'traceLevel' => YII_DEBUG ? 3 : 0, 
      'targets' => [ 
       [ 
        'class' => 'yii\log\FileTarget', 
        'levels' => ['error', 'warning'], 
       ], 
      ], 
     ], 
     'errorHandler' => [ 
      'errorAction' => 'site/error', 
     ], 
     'db' => [ 
      'tablePrefix' => SUBDOMAIN.'_', 
     ], 
     'urlManager'=>[ 
      'rules' => [ 
       '<controller:[\w-]+>/<id:\d+>' => ''.SUBDOMAIN.'/<controller>/view', 
       '<controller:[\w-]+/<action:[\w-]+>' => ''.SUBDOMAIN.'/<controller>/<action>', 
       '<controller:[\w-]+>/<action:[\w-]+>/<id:\d+>' => ''.SUBDOMAIN.'/<controller>/<action>', 
      ], 
     ], 

    ], 
    'params' => $params, 
];