Yii2 - 子域路由

时间:2016-03-08 00:22:52

标签: yii routing yii2

我想使用子域作为id,我需要动态路由器来执行此操作。在 urlManager 中,我添加了这一行:

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

当我尝试任何动作时,例如:

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

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

如何实现子域路由器?

1 个答案:

答案 0 :(得分:1)

我认为你的路由器映射设置没问题。如果你想要更精确:

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

但为了使其有效,你最好仔细检查以下两件事:

首先,您的虚拟主机应该有*.local.dev

    server_name
  • nginx {li>或ServerAlias
  • 中的Apache

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

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

e.g。对于Apache,只需在.htaccess文件夹下创建一个YOUR_APP/web/文件,其中包含以下内容:

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