RewriteEngine On Options -MultiViews +FollowSymLinks # =============================== # PRIORITY: CALLBACK HANDLER (WAJIB PALING ATAS) # =============================== RewriteRule ^(winpay|doku|midtrans)/callback(/.*)?$ callback/$1/index.php [L,QSA] # =============================== # SKIP REAL FILE / FOLDER # =============================== RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # =============================== # ERROR PAGE # =============================== RewriteRule ^error/?$ index.php?route=error [L,QSA] # =============================== # TOKEN ONLY # =============================== RewriteRule ^([a-fA-F0-9]{64})/?$ index.php?token=$1 [L,QSA] # =============================== # PAYMENT PROCESS # =============================== RewriteRule ^([a-fA-F0-9]{64})/(payment_process|check_status|cancel)/?$ index.php?token=$1&route=$2 [L,QSA] # =============================== # TOKEN ROUTES # =============================== RewriteRule ^([a-fA-F0-9]{64})/(auth|portal|payment)/?$ index.php?token=$1&route=$2 [L,QSA] # =============================== # TOKEN STATUS # =============================== RewriteRule ^([a-fA-F0-9]{64})/status/([a-zA-Z0-9_-]+)/?$ index.php?token=$1&route=status&trx=$2 [L,QSA] # =============================== # FINAL (FALLBACK) # =============================== RewriteCond %{QUERY_STRING} !^route=error RewriteRule ^.*$ index.php?route=error [L,QSA]