%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
# Konfigurasi dasar Apache untuk PPID Mamuju Tengah.
# Halaman default.
DirectoryIndex index.php index.html
# Nonaktifkan directory listing & negosiasi konten (MultiViews) agar tidak
# bentrok dengan aturan URL bersih di bawah.
Options -Indexes -MultiViews
# Sembunyikan file tersembunyi & sensitif.
<FilesMatch "^\.">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
</FilesMatch>
# ─────────────────────────────────────────────────────────────────────────────
# KOMPRESI TEKS (gzip) — perkecil transfer HTML/CSS/JS/SVG/font.
# ─────────────────────────────────────────────────────────────────────────────
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml \
application/javascript application/x-javascript text/javascript \
application/json application/xml image/svg+xml application/rss+xml \
application/vnd.ms-fontobject font/ttf font/otf font/woff
# Jangan kompres yang sudah terkompresi (woff2, gambar, video).
</IfModule>
</IfModule>
# ─────────────────────────────────────────────────────────────────────────────
# CACHE ASET STATIS di browser (kunjungan berulang jauh lebih cepat).
# Aset di-cache lama; app.css memakai ?v=mtime untuk cache-busting saat di-build ulang.
# ─────────────────────────────────────────────────────────────────────────────
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 week"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType video/mp4 "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
# HTML dinamis: jangan di-cache lama.
ExpiresByType text/html "access plus 0 seconds"
</IfModule>
# ─────────────────────────────────────────────────────────────────────────────
# URL BERSIH TANPA .php
# ─────────────────────────────────────────────────────────────────────────────
<IfModule mod_rewrite.c>
RewriteEngine On
# (1a) index.php → root direktorinya (/index.php → / , /admin/index.php → /admin/).
# Hanya GET/HEAD agar form POST tidak rusak.
RewriteCond %{REQUEST_METHOD} ^(GET|HEAD)$ [NC]
RewriteCond %{THE_REQUEST} \s/+(([^?\s]+/)?)index\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L]
# (1b) Permintaan langsung ke *.php dialihkan ke URL bersih (301).
# Contoh: /profil.php → /profil , /berita-detail.php?slug=x → /berita-detail?slug=x
# Query string ikut dipertahankan otomatis oleh Apache.
RewriteCond %{REQUEST_METHOD} ^(GET|HEAD)$ [NC]
RewriteCond %{THE_REQUEST} \s/+([^?\s]+)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L]
# (2) Sajikan file .php secara internal untuk URL bersih — hanya bila file
# .php-nya benar-benar ada. File & direktori nyata (aset, uploads) dilewati.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
</IfModule>
# Halaman error ramah (opsional, sesuaikan bila perlu).
# ErrorDocument 404 /ppidmateng/index.php