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!