У меня есть расширенное приложение yii с интерфейсом и бэкэнд.yii2 правило перезаписи для портала клиента
Что я пытаюсь достичь, так это то, что я могу получить доступ к интерфейсу с именем клиента.
Пример (местное): http://localhost/myproject/frontend/web/customer1
должен стать http://localhost/myproject/frontend/web/customer1/site/login
при первом посещении
И после входа в систему имя клиента должно остаться в URL. В настоящий момент URL изменяется после входа в систему до http://localhost/myproject/frontend/web/
Info: customer
- это параметр GET. Он всегда должен быть первым аргументом после http://localhost/myproject/frontend/web/
, но я не хочу указывать аргумент в каждой переадресации или пользовательской ссылке. Я надеюсь, что есть способ сохранить этот аргумент и передать его каждому из следующих изменений сайта.
То, что я пытался до сих пор:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => true,
'rules' => [
'<controller>/<action>' => '<controller>/<action>',
'<customer:\w+>' => '/site/login',
]
],
Но это не работает. Я могу получить доступ только к странице входа, после чего имя пользователя больше не отображается в URL-адресе.
Мой .htaccess файл выглядит следующим образом:
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
Я действительно ценю любые намеки на эту тему.
Спасибо, это хорошая идея. –
У вас есть идея, как обращаться с $ this-> goBack() и $ this-> goHome(). Кажется, они используют Url :: to() без использования массива в качестве параметра. Есть ли простой способ также перезаписать Url :: to() и установить мой параметр GET? –
Вы можете попробовать указать свой собственный класс в 'Yii :: $ classMap'. См. Http://www.yiiframework.com/doc-2.0/guide-helper-overview.html#customizing-helper-classes. Я уже упоминал об этом в ответе. – arogachev