2016-03-08 7 views
3

Я хочу использовать субдомен как id, и для этого мне нужен динамический маршрутизатор. В urlManager, я добавил эту строку:Yii2 - маршрутизация поддоменов

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

Когда я пытаюсь какие-либо действия, например:

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

Я ничего не получаю - вар не печатается, и скрипт перестает работать (экран белый). Когда я удаляю $ user, страница загружается без проблем

Как я могу получить маршрутизатор субдомена?

ответ

1

Я думаю, что настройка вашего маршрутизатора в порядке. Если вы хотите быть более точным:

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

Но чтобы заставить его работать, вы бы лучше дважды проверить следующие две вещи:

Во-первых, ваш виртуальный хост должен иметь *.local.dev

  • server_name в nginx
  • или ServerAlias в Apache

Тогда вы можете использовать имя динамического контроллера как субдомен.

Во-вторых, ваш виртуальный хост должен быть правильно настроен rewrite, см. Yii2 doc.

например. для 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 
Смежные вопросы