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

Comment masquer les chemins frontend et backend dans Yii2 avec .htaccess ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 17:42:03338parcourir

How to Hide Frontend and Backend Paths in Yii2 with .htaccess?

Masquage des chemins frontend et backend avec .htaccess dans Yii2

Problème :

Lors de l'accès au frontend ou au backend d'un Dans l'application Yii2, les chemins « frontend/web » et « backend/web » sont visibles dans les URL, ce qui peut être indésirable. Cet article propose une solution pour masquer complètement ces chemins.

Solution :

Étape 1 : .htaccess dans le dossier racine

Créez un fichier .htaccess dans le dossier racine (advanced/) avec le contenu suivant :

Options +FollowSymlinks
RewriteEngine On

# Admin
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]

# Frontend
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 : composants/Request.php

Créer des 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 principale du frontend et du backend

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

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],</code>

Dans backend/config/main.php, définissez en plus l'adminUrl :

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

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],</code>

Étape 4 (Facultatif) : .htaccess dans les répertoires Web

Créez un fichier .htaccess dans les répertoires frontend/web et backend/web avec les éléments suivants :

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

Résultat :

Après ces modifications, vous devriez pouvoir accéder à votre frontend à http://localhost/yii2app/ et à votre backend à http://localhost/yii2app/admin / sans voir les chemins frontend ou backend 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