2016-03-08 181 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