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

DDD
Libérer: 2024-10-30 09:44:27
original
449 Les gens l'ont consulté

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

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

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

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal