Menyembunyikan Direktori frontend/web dan backend/web pada Tapak Web Yii2 dengan .htaccess
Masalah:
Dalam templat Yii2 Advanced, direktori frontend dan backend boleh dilihat dalam URL tapak web. Ini mungkin tidak diingini untuk penampilan yang lebih profesional atau tersuai.
Penyelesaian:
Untuk menyembunyikan direktori ini, ubah suai fail .htaccess dalam direktori akar tapak web seperti berikut:
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
Konfigurasi Tambahan:
Untuk pengendalian URL yang betul, cipta fail 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>
Konfigurasikan komponen Permintaan dalam frontend/config/main.php dan backend/config/main.php, masing-masing:
<code class="php">// frontend 'request' => [ 'class' => 'common\components\Request', 'web' => '/frontend/web' ], // backend 'request' => [ 'class' => 'common\components\Request', 'web' => '/backend/web', 'adminUrl' => '/admin' ],</code>
Konfigurasi .htaccess Tambahan untuk Direktori Web:
Jika langkah di atas tidak menyelesaikan isu, cipta atau ubah suai fail .htaccess dalam direktori web (kedua-dua bahagian hadapan dan bahagian belakang) dengan kandungan berikut:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
Selepas melaksanakan konfigurasi ini, URL tapak web tidak lagi akan memaparkan direktori frontend/web atau backend/web, memberikan penampilan yang lebih bersih dan lebih profesional.
Atas ialah kandungan terperinci Bagaimana untuk Menyembunyikan Direktori Frontend dan Backend daripada URL dalam Laman Web Yii2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!