Masquage des chemins frontend et backend dans Yii2 à l'aide de .htaccess et du composant de requête
Aperçu du problème
Les applications Yii2 affichent par défaut les chemins frontend et backend dans les URL. Cela peut être indésirable pour une expérience propre et conviviale. L'objectif est de rendre l'intégralité du site accessible sans révéler ces chemins.
Solution
Pour y parvenir, une combinaison de configurations .htaccess et un composant Request personnalisé est utilisé .
Étape 1 : Configuration .htaccess
Créez un fichier .htaccess dans le répertoire racine (c'est-à-dire advanced/.htaccess) avec le code suivant :
Options +FollowSymlinks RewriteEngine On # Handle admin URL first 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 URL 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 : Composant de requête personnalisé
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>
Étape 3 : Configuration des composants
Dans les fichiers frontend/config/main.php et backend/config/main.php, ajoutez ce qui suit sous le tableau des composants :
<code class="php">// frontend 'request' => [ 'class' => 'common\components\Request', 'web' => '/frontend/web' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ], // backend 'request' => [ 'class' => 'common\components\Request', 'web' => '/backend/web', 'adminUrl' => '/admin' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ],</code>
Étape facultative 4 : Fichier .htaccess dans le répertoire Web
Si les URL contiennent toujours les chemins frontend/backend, créez un fichier .htaccess dans le répertoire Web avec les lignes suivantes :
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
Conclusion
Avec ces modifications, l'application Yii2 fonctionnera désormais sans afficher les chemins frontend et backend dans les URL, offrant ainsi une interface plus conviviale. et une expérience frontale sécurisée.
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!