Le modèle d'application avancé de Yii2 crée des sections frontend et backend dans des répertoires séparés. Par défaut, ces répertoires apparaissent dans les URL, ce qui peut être indésirable pour une présentation claire et professionnelle. Cet article vise à vous guider pour masquer complètement ces répertoires.
1. Configuration racine .htaccess
Dans le répertoire racine du projet (par exemple, advanced/), créez un fichier .htaccess et collez le code suivant :
Options +FollowSymlinks RewriteEngine On # Redirect admin requests to backend/web RewriteCond %{REQUEST_URI} ^/(admin) RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ RewriteRule ^.*$ backend/web/index.php [L] # Redirect all other requests to frontend/web 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
2. Request Component
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>
3. Configuration des applications frontend et backend
Dans frontend/config/main.php et backend/config/main.php, modifiez les composants request et urlManager comme suit :
frontend/config/main.php
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/frontend/web' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false ]</code>
backend/config/main.php
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/backend/web', 'adminUrl' => '/admin' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false ]</code>
Étape facultative 4 (si les étapes précédentes échouent)
Créer un fichier .htaccess dans le répertoire web et ajoutez le code suivant :
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
Résultat
Après avoir appliqué ces modifications, vous pouvez accéder à votre site web à l'adresse http:/ /localhost/yii2app et http://localhost/yii2app/admin sans qu'aucun chemin frontend ou backend n'apparaisse 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!