Options -Indexes
<IfModule mod_php.c>
  php_value upload_max_filesize 12M
  php_value post_max_size 64M
  php_value max_file_uploads 40
</IfModule>
<IfModule mod_php7.c>
  php_value upload_max_filesize 12M
  php_value post_max_size 64M
  php_value max_file_uploads 40
</IfModule>
<IfModule mod_php8.c>
  php_value upload_max_filesize 12M
  php_value post_max_size 64M
  php_value max_file_uploads 40
</IfModule>
# File internal tidak boleh dibuka langsung lewat browser
<FilesMatch "^(config|calendar_view)\.php$|\.(lock|sql|md|log|ini)$">
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
</FilesMatch>

# URL bersih, tanpa daftar folder, dan halaman 404 bermerek (butuh mod_rewrite; aktif bawaan di XAMPP)
<IfModule mod_rewrite.c>
  RewriteEngine On
  # penanda bahwa URL bersih aktif (dipakai aplikasi untuk menyembunyikan .php dari alamat)
  RewriteRule ^ - [E=CLEAN_URLS:1]
  # /halaman -> halaman.php (alamat di browser tetap /halaman)
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}.php -f
  RewriteRule ^([^/]+)$ $1.php [L]
  # membuka folder (assets/, dll) -> 404, bukan daftar isi folder
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^(.+)$ error.php?code=404 [L]
  # alamat yang tidak ada -> 404
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^ error.php?code=404 [L]
</IfModule>
