Menghilangkan Frontend Web Yii2 di Apache dan Nginx

Advertisement

Untuk menghilangkan frontend web Yii2 dari struktur URL aplikasi, Anda dapat menggunakan beberapa metode aman sehingga URL menjadi lebih rapi dan profesional. Pendekatan ini membantu meningkatkan kepercayaan pengguna, memudahkan pengelolaan, serta menjaga struktur pengembangan yang tetap teratur.

Advertisement

Pada pengembangan aplikasi modern, tampilan URL memiliki peran penting. URL yang terlalu panjang dapat membingungkan pengguna. Selain itu, direktori internal seperti frontend atau backend sebaiknya tidak terlihat langsung. Karena itu, diperlukan konfigurasi yang tepat sehingga aplikasi tetap berjalan optimal tanpa menunjukkan struktur internal.

Pada artikel ini terdapat tiga metode utama yang dapat Anda gunakan, yaitu konfigurasi Virtual Host Apache, modifikasi struktur Yii2, dan konfigurasi Nginx. Semua metode ini aman untuk digunakan baik pada lingkungan lokal maupun produksi jika disesuaikan dengan praktik terbaik.

Advertisement

1. Menghilangkan Frontend Web Yii2 Menggunakan Virtual Host Apache

Virtual Host membantu memetakan domain ke direktori tertentu sehingga struktur frontend/web dan backend/web tidak tampil pada URL. Metode ini sangat umum digunakan karena sederhana dan mendukung banyak konfigurasi tambahan.

Buka file konfigurasi Apache, biasanya berada pada direktori httpd-vhosts.conf. Tambahkan konfigurasi berikut:

Advertisement
<VirtualHost *:80>
    ServerName frontend.local
    DocumentRoot "C:/xampp/htdocs/yii2-test/frontend/web/"
        
    <Directory "C:/xampp/htdocs/yii2-test/frontend/web/">
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . index.php
        DirectoryIndex index.php
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName backend.local
    DocumentRoot "C:/xampp/htdocs/yii2-test/backend/web/"
        
    <Directory "C:/xampp/htdocs/yii2-test/backend/web">
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . index.php
        DirectoryIndex index.php
    </Directory>
</VirtualHost>

Setelah selesai, tambahkan domain lokal pada file hosts sistem operasi:

127.0.0.1 frontend.local
127.0.0.1 backend.local

Jika konfigurasi sudah benar, frontend dapat diakses melalui http://frontend.local/ dan backend melalui http://backend.local/. Anda dapat membaca referensi tambahan pada dokumentasi resmi Apache (nofollow) untuk konfigurasi lebih lanjut.

2. Memodifikasi Struktur Yii2 untuk Menghilangkan Frontend Web Yii2

Pada metode ini, beberapa berkas frontend dipindahkan ke direktori root aplikasi. Teknik ini cukup efektif jika Anda bekerja pada lingkungan lokal atau pengujian. Namun, untuk produksi metode Virtual Host atau Nginx lebih direkomendasikan.

struktur file untuk menghilangkan frontend web yii2
Struktur berkas yang dipindahkan ke root untuk menghilangkan frontend web Yii2

Salin direktori assets, css, serta file index.php dari frontend/web ke root instalasi Yii2. Setelah itu, ubah file index.php menggunakan kode berikut:

<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/frontend/config/bootstrap.php');

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/common/config/main.php'),
    require(__DIR__ . '/common/config/main-local.php'),
    require(__DIR__ . '/frontend/config/main.php'),
    require(__DIR__ . '/frontend/config/main-local.php')
);

(new yii\web\Application($config))->run();

Setelah semua selesai, aplikasi dapat diakses melalui http://localhost/nama-proyek/.

3. Menghilangkan Frontend Web Yii2 Menggunakan Nginx

Nginx menawarkan performa tinggi dan sering digunakan pada server produksi. Untuk menghilangkan frontend web Yii2 pada Nginx, Anda hanya perlu mengarahkan root server pada direktori web aplikasi.

Konfigurasi Frontend

server {
    listen 80;
    server_name frontend.local;
    root /var/www/yii2-test/frontend/web;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* /\.(htaccess|svn|git) {
        deny all;
    }
}

Artikel Terbaru