Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menyembunyikan Laluan Frontend dan Backend sepenuhnya dalam Aplikasi Lanjutan Yii2?

Bagaimana untuk Menyembunyikan Laluan Frontend dan Backend sepenuhnya dalam Aplikasi Lanjutan Yii2?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 17:15:03336semak imbas

How to Completely Hide Frontend and Backend Paths in Yii2 Advanced Applications?

Menyembunyikan sepenuhnya Laluan Bahagian Hadapan dan Bahagian Belakang Yii2

Memahami Masalah

Templat Aplikasi Terperinci Yii2 mencipta bahagian bahagian hadapan dan bahagian belakang dalam direktori berasingan. Secara lalai, direktori ini muncul dalam URL, yang boleh menjadi tidak diingini untuk persembahan yang bersih dan kelihatan profesional. Artikel ini bertujuan untuk membimbing anda menyembunyikan direktori ini sepenuhnya.

Panduan Langkah demi Langkah

1. Root .htaccess Configuration

Dalam direktori akar projek (cth., advanced/), cipta fail .htaccess dan tampal kod berikut:

Options +FollowSymlinks
RewriteEngine On

# Redirect admin requests to backend/web
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteRule ^.*$ backend/web/index.php [L]

# Redirect all other requests to frontend/web
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

2. Minta Komponen

Buat komponen/fail 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>

3. Mengkonfigurasi Aplikasi Frontend dan Backend

Dalam frontend/config/main.php dan backend/config/main.php, ubah suai permintaan dan komponen urlManager seperti berikut:

frontend /config/main.php

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false
]</code>

backend/config/main.php

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false
]</code>

Pilihan Langkah 4 (jika Langkah Sebelumnya Gagal)

Buat fail .htaccess dalam direktori web dan tambahkan kod berikut:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/ [L]

Keputusan

Selepas memohon perubahan ini, anda boleh mengakses tapak web anda di http://localhost/yii2app dan http://localhost/yii2app/admin tanpa sebarang laluan frontend atau backend muncul dalam URL.

Atas ialah kandungan terperinci Bagaimana untuk Menyembunyikan Laluan Frontend dan Backend sepenuhnya dalam Aplikasi Lanjutan Yii2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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