2016-03-08 143 views
3

我想使用子域作为ID,我需要动态路由器来做到这一点。在urlManager,我加入这一行:Yii2 - 子域路由

"http://<user:\w+>.local.dev/<controller:\w+>/<action>" => '<controller>/<action>', 

当我尝试采取任何行动,例如:

function actionMyAccount($user){ 
echo $user;... 
} 

,我没有得到任何东西 - 不打印var和脚本停止工作(屏幕是白色的)。当我删除$用户,页面加载没有任何问题

我该如何实现子域路由器?

回答

1

我认为你的路由器映射设置是可以的。如果你希望它是更精确:

"http://<user:[^www]\w+>.local.dev/<controller:\w+>/<action:\w+>" => '<controller>/<action>'

但要使其工作,你会以下两件事情更好仔细检查:

首先,你的虚拟主机应该有一个*.local.dev

  • nginx
  • ServerAliasserver_nameApache

然后,您可以使用动态控制器的名称作为子域。

其次,您的虚拟主机应该已正确配置rewrite规则,请参阅Yii2 doc

例如对于Apache,只是YOUR_APP/web/文件夹下创建一个.htaccess文件,内容如下行:

Options +FollowSymLinks 
IndexIgnore */* 
RewriteEngine on 
# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# otherwise forward it to index.php 
RewriteRule . index.php