# Επίτρεψε στατικά αρχεία (εικόνες) — απαγόρευσε εκτέλεση scripts (ασφάλεια upload).

# !! MUST STAY WRAPPED IN <IfModule> !!
# 2026-08-16: a BARE `php_flag engine off` here made api.snako.gr answer HTTP 500 for
# EVERY file under /uploads/ -> not one owner-uploaded image loaded on the live site.
# php_flag only exists when PHP runs as an Apache module (mod_php = XAMPP). On cPanel
# (PHP-FPM/LSAPI) a bare php_flag is a FATAL config error for the whole directory.
# Wrapped, it is simply ignored there - and the RemoveHandler/RemoveType/FilesMatch
# rules below already deny script execution on their own.
# Same fix as backEnd/.htaccess (2026-08-13).
<IfModule mod_php.c>
  php_flag engine off
</IfModule>
<IfModule mod_php7.c>
  php_flag engine off
</IfModule>
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>

RemoveHandler .php .phtml .php3 .php4 .php5 .php7 .phar
RemoveType .php .phtml .php3 .php4 .php5 .php7 .phar
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phar|cgi|pl|py|sh)$">
  Require all denied
</FilesMatch>

# --- 2026-09-27: Ο BROWSER ΚΡΑΤΑΕΙ ΤΙΣ ΦΩΤΟΓΡΑΦΙΕΣ 1 ΧΡΟΝΟ (PageSpeed «cache-insight») ---
# Μέχρι σήμερα ο Apache δεν έστελνε ΚΑΜΙΑ οδηγία cache → κάθε επίσκεψη ξανακατέβαζε
# τις ίδιες φωτογραφίες (~300 KB στην αρχική μόνο).
# ⭐ ΓΙΑΤΙ ΤΟ `immutable` ΕΙΝΑΙ ΑΣΦΑΛΕΣ: το api/upload.php δίνει σε ΚΑΘΕ ανέβασμα νέο
# τυχαίο όνομα (bin2hex(random_bytes(16))). Όταν ο owner αλλάζει φωτογραφία αλλάζει και
# το URL, άρα ο πελάτης δεν βλέπει ποτέ την παλιά.
# 🔴 Αν ποτέ κάποιος κώδικας γράψει εδώ αρχείο με ΣΤΑΘΕΡΟ όνομα (π.χ. «logo.webp» που
# αντικαθίσταται), αυτός ο κανόνας θα το «κολλήσει» στους browsers για έναν χρόνο.
# Χωρίς <IfModule> θα έριχνε 500 σε server χωρίς mod_headers (ίδια παγίδα με το php_flag).
<IfModule mod_headers.c>
  <FilesMatch "\.(webp|jpe?g|png|gif|avif|svg)$">
    Header set Cache-Control "public, max-age=31536000, immutable"
  </FilesMatch>
  Header set X-Content-Type-Options "nosniff"
</IfModule>
