Maison  >  Article  >  développement back-end  >  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 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 17:15:03273parcourir

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

Masquer complètement les 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 vise à 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 :

<code class="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();
        }
    }
}</code>

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

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false
]</code>

backend/config/main.php

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false
]</code>

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

Créer 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?/ [L]

Résultat

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn