Maison >développement back-end >tutoriel php >Comment masquer les chemins frontend et backend dans les applications Yii2 ?

Comment masquer les chemins frontend et backend dans les applications Yii2 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 19:28:02797parcourir

How to Hide Frontend and Backend Paths in Yii2 Applications?

Masquage des chemins frontend et backend dans Yii2 à l'aide de .htaccess et du composant de requête

Aperçu du problème

Les applications Yii2 affichent par défaut les chemins frontend et backend dans les URL. Cela peut être indésirable pour une expérience propre et conviviale. L'objectif est de rendre l'intégralité du site accessible sans révéler ces chemins.

Solution

Pour y parvenir, une combinaison de configurations .htaccess et un composant Request personnalisé est utilisé .

Étape 1 : Configuration .htaccess

Créez un fichier .htaccess dans le répertoire racine (c'est-à-dire advanced/.htaccess) avec le code suivant :

Options +FollowSymlinks
RewriteEngine On

# Handle admin URL first
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^admin/assets/(.*)$ backend/web/assets/ [L]
RewriteRule ^admin/css/(.*)$ backend/web/css/ [L]
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^.*$ backend/web/index.php [L]

# Handle frontend URL
RewriteCond %{REQUEST_URI} ^/(assets|css)
RewriteRule ^assets/(.*)$ frontend/web/assets/ [L]
RewriteRule ^css/(.*)$ frontend/web/css/ [L]
RewriteRule ^js/(.*)$ frontend/web/js/ [L]
RewriteRule ^images/(.*)$ frontend/web/images/ [L]
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

Étape 2 : Composant de requête personnalisé

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>

Étape 3 : Configuration des composants

Dans les fichiers frontend/config/main.php et backend/config/main.php, ajoutez ce qui suit sous le tableau des composants :

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

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

Étape facultative 4 : Fichier .htaccess dans le répertoire Web

Si les URL contiennent toujours les chemins frontend/backend, créez un fichier .htaccess dans le répertoire Web avec les lignes suivantes :

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

Conclusion

Avec ces modifications, l'application Yii2 fonctionnera désormais sans afficher les chemins frontend et backend dans les URL, offrant ainsi une interface plus conviviale. et une expérience frontale sécurisée.

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