"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment masquer complètement les chemins frontend et backend dans les applications avancées Yii2 ?

Comment masquer complètement les chemins frontend et backend dans les applications avancées Yii2 ?

Publié le 2024-11-18
Parcourir:108

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

Masquage complet des chemins frontend et backend de Yii2

Comprendre le problème

Le modèle d'application avancé de Yii2 crée des sections frontend et backend dans des répertoires séparés. Par défaut, ces répertoires apparaissent dans les URL, ce qui peut être indésirable pour une présentation claire et professionnelle. Cet article a pour but de vous guider pour masquer complètement ces répertoires.

Guide étape par étape

1. Configuration racine .htaccess

Dans le répertoire racine du projet (par exemple, advanced/), créez un fichier .htaccess et collez le code suivant :

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. Request Component

Créez un fichier composants/Request.php dans le répertoire commun et ajoutez le code suivant :

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. Configuration des applications frontend et backend

Dans frontend/config/main.php et backend/config/main.php, modifiez les composants request et urlManager comme suit :

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
]

Étape facultative 4 (si les étapes précédentes échouent)

Créez un fichier .htaccess dans le répertoire Web et ajoutez le code suivant :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

Result

Après avoir appliqué ces modifications, vous pouvez accéder à votre site Web à l'adresse http:/ /localhost/yii2app et http://localhost/yii2app/admin sans qu'aucun chemin frontend ou backend n'apparaisse dans les URL.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3