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
Libérer: 2024-10-30 17:42:03
original
360 Les gens l'ont consulté

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
Copier après la connexion

É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>
Copier après la connexion

É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>
Copier après la connexion

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>
Copier après la connexion

É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]
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal