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!