Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyembunyikan Laluan Frontend dan Backend dalam Yii2 dengan .htaccess?

Bagaimana untuk Menyembunyikan Laluan Frontend dan Backend dalam Yii2 dengan .htaccess?

Susan Sarandon
Susan Sarandonasal
2024-10-30 17:42:03331semak imbas

How to Hide Frontend and Backend Paths in Yii2 with .htaccess?

Menyembunyikan Laluan Frontend dan Backend dengan .htaccess dalam Yii2

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!

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