Pada saat melakukan instalasi Nginx terdapat sub folder yang sudah di baca
Berikut ini Konfigurasi agar Sub Folder Menjadi Dinamis
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
root /var/www/html;
index index.php index.html;
server_name _;
ssl_certificate "/etc/letsencrypt/live/code.nanatech.id/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/code.nanatech.id/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
#UMUM
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ ^/(.*)?/public {
alias /var/www/html/$1/public;
index index.php index.html index.htm;
try_files $uri $uri/ /$1/public/index.php?$args;
}
}
Perintah yang berpengaruh :
location ~ ^/(.*)?/public {
alias /var/www/html/$1/public;
index index.php index.html index.htm;
try_files $uri $uri/ /$1/public/index.php?$args;
}
Penjelasan Per Baris
location ~ ^/(.*)?/public {
~→ Menggunakan regex untuk mencocokkan URL.^/→ URL harus diawali dengan "/".(.*)?→- Menangkap semua karakter setelah
/. ?artinya bagian(.*)opsional, sehingga/publictanpa subfolder pun bisa cocok.
- Menangkap semua karakter setelah
Contoh hasil tangkapan regex untuk
$1:URL: /sh/smkn1abang/tu/pegawai/public → $1 = sh/smkn1abang/tu/pegawai URL: /sh/smkn2denpasar/guru/public → $1 = sh/smkn2denpasar/guru URL: /public → $1 = (kosong, karena opsional)
alias /var/www/html/$1/public;
- Mengubah root direktori menjadi
/var/www/html/$1/public/. $1akan diganti dengan teks yang dicocokkan oleh(.*).- Contoh hasil alias:
URL: /sh/smkn1abang/tu/pegawai/public
Akan diarahkan ke: /var/www/html/sh/smkn1abang/tu/pegawai/public/
Perbedaan
alias vs root:aliasmengganti seluruh path.rootmenambahkan path setelahlocation.
index index.php index.html index.htm;
- Jika pengguna mengakses
/public/tanpa file spesifik, maka akan otomatis menampilkanindex.php,index.html, atauindex.htm.
try_files $uri $uri/ /$1/public/index.php?$args;
- Cek apakah file atau folder ada di dalam
/var/www/html/$1/public/. - Jika tidak ada, maka akan diarahkan ke
index.phpdi dalam/$1/public/. ?$argsakan mempertahankan query string dari URL asli
Request: /sh/smkn1abang/tu/pegawai/public/dashboard
Jika /var/www/html/sh/smkn1abang/tu/pegawai/public/dashboard tidak ada,
maka akan diarahkan ke:
/var/www/html/sh/smkn1abang/tu/pegawai/public/index.php?dashboard