REGEX NGINX UNTUK SUB FOLDER LARAVEL

 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 /public tanpa subfolder pun bisa cocok.
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/.
  • $1 akan 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:
  • alias mengganti seluruh path.
  • root menambahkan path setelah location.

index index.php index.html index.htm;

  • Jika pengguna mengakses /public/ tanpa file spesifik, maka akan otomatis menampilkan index.php, index.html, atau index.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.php di dalam /$1/public/.
  • ?$args akan mempertahankan query string dari URL asli
Contoh
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