Расширенный шаблон приложения Yii2 создает разделы внешнего и внутреннего интерфейса в отдельных каталогах. По умолчанию эти каталоги отображаются в URL-адресах, что может быть нежелательно для чистоты и профессионального вида презентации. Цель этой статьи — помочь вам полностью скрыть эти каталоги.
1. Корневая конфигурация .htaccess
В корневом каталоге проекта (например, Advanced/) создайте файл .htaccess и вставьте следующий код:
Options FollowSymlinks RewriteEngine On # Redirect admin requests to backend/web RewriteCond %{REQUEST_URI} ^/(admin) RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ RewriteRule ^.*$ backend/web/index.php [L] # Redirect all other requests to frontend/web RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/ RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php
2. Компонент запроса
Создайте файлComponents/Request.php в общем каталоге и добавьте следующий код:
namespace common\components;
class Request extends \yii\web\Request {
public $web;
public $adminUrl;
public function getBaseUrl(){
return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl;
}
public function resolvePathInfo(){
if($this->getUrl() === $this->adminUrl){
return "";
}else{
return parent::resolvePathInfo();
}
}
}
3. Настройка внешних и внутренних приложений
В frontend/config/main.php и backend/config/main.php измените компоненты request и urlManager следующим образом:
frontend /config/main.php
'request' => [
'class' => 'common\components\Request',
'web' => '/frontend/web'
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false
]
backend/config/main.php
'request' => [
'class' => 'common\components\Request',
'web' => '/backend/web',
'adminUrl' => '/admin'
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false
]
Необязательный шаг 4 (если предыдущие шаги не помогли)
Создайте файл .htaccess в веб-каталоге и добавьте следующий код:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]
Результат
После применения этих изменений вы сможете получить доступ к своему веб-сайту по адресу http:/ /localhost/yii2app и http://localhost/yii2app/admin без каких-либо путей к внешнему или внутреннему интерфейсу, появляющихся в URL-адресах.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3