«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как полностью скрыть пути к интерфейсу и бэкэнду в расширенных приложениях Yii2?

Как полностью скрыть пути к интерфейсу и бэкэнду в расширенных приложениях Yii2?

Опубликовано 18 ноября 2024 г.
Просматривать:111

How to Completely Hide Frontend and Backend Paths in Yii2 Advanced Applications?

Полное скрытие путей внешнего и внутреннего интерфейса Yii2

Понимание проблемы

Расширенный шаблон приложения 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