Maison  >  Article  >  développement back-end  >  Comment masquer les répertoires frontend et backend des URL dans un site Web Yii2 ?

Comment masquer les répertoires frontend et backend des URL dans un site Web Yii2 ?

DDD
DDDoriginal
2024-10-30 09:44:27457parcourir

How to Hide the Frontend and Backend Directories from URLs in a Yii2 Website?

Masquage des répertoires frontend/web et backend/web sur les sites Web Yii2 avec .htaccess

Problème :

Dans le modèle Yii2 Advanced, les répertoires frontend et backend sont visibles dans les URL du site Web. Cela peut être indésirable pour une apparence plus professionnelle ou personnalisée.

Solution :

Pour masquer ces répertoires, modifiez le fichier .htaccess dans le répertoire racine du site Web comme suit :

Options +FollowSymlinks
RewriteEngine On

# Handle admin URL separately
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 assets
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]

# Handle frontend
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

Configuration supplémentaire :

Pour une gestion correcte des URL, 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>

Configurez le composant Request dans frontend/config/main.php et backend/config/main.php, respectivement :

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

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

Configuration .htaccess supplémentaire pour l'annuaire Web :

Si les étapes ci-dessus ne résolvent pas le problème, créez ou modifiez le fichier .htaccess dans le répertoire Web (frontend et backend) avec le contenu suivant :

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

Après En mettant en œuvre ces configurations, les URL du site Web n'afficheront plus les répertoires frontend/web ou backend/web, offrant ainsi une apparence plus propre et plus professionnelle.

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