Masalah:
Apabila mengakses frontend atau backend a Aplikasi Yii2, laluan "frontend/web" dan "backend/web" boleh dilihat dalam URL, yang mungkin tidak diingini. Artikel ini menyediakan penyelesaian untuk menyembunyikan sepenuhnya laluan ini.
Penyelesaian:
Langkah 1: .htaccess dalam Root Folder
Buat fail .htaccess dalam folder akar (lanjutan/) dengan kandungan berikut:
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
Langkah 2: components/Request.php
Buat komponen /Request.php dalam direktori biasa dan tambah kod berikut:
<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>
Langkah 3: Konfigurasi Utama Frontend dan Backend
Di frontend/config/main. php dan backend/config/main.php, tambahkan yang berikut di bawah tatasusunan komponen:
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/frontend/web' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ],</code>
Dalam backend/config/main.php, tetapkan adminUrl:
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/backend/web', 'adminUrl' => '/admin' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ],</code>
Langkah 4 (Pilihan): .htaccess dalam Direktori Web
Buat fail .htaccess dalam kedua-dua direktori frontend/web dan backend/web dengan yang berikut:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
Hasil:
Selepas perubahan ini, anda sepatutnya boleh mengakses bahagian hadapan anda di http://localhost/yii2app/ dan bahagian belakang anda di http://localhost/yii2app/admin / tanpa melihat laluan hujung hadapan atau hujung belakang dalam URL.
Atas ialah kandungan terperinci Bagaimana untuk Menyembunyikan Laluan Frontend dan Backend dalam Yii2 dengan .htaccess?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!