Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menyembunyikan Direktori Frontend dan Backend daripada URL dalam Laman Web Yii2?

Bagaimana untuk Menyembunyikan Direktori Frontend dan Backend daripada URL dalam Laman Web Yii2?

DDD
Lepaskan: 2024-10-30 09:44:27
asal
467 orang telah melayarinya

How to Hide the Frontend and Backend Directories from URLs in a Yii2 Website?

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
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan