我想使用子域作为id,我需要动态路由器来执行此操作。在 urlManager 中,我添加了这一行:
"http://<user:\w+>.local.dev/<controller:\w+>/<action>" => '<controller>/<action>',
当我尝试任何动作时,例如:
function actionMyAccount($user){
echo $user;...
}
我没有得到任何东西 - var没有打印,脚本停止工作(屏幕是白色的)。当我删除$ user时,页面加载没有任何问题
如何实现子域路由器?
答案 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