# PM Admin, pm-media (§10.9, §13.10): directorul media public (storage/app/public în modurile symlink și route,
# PM_MEDIA_ROOT în strategia C). `php artisan pm:media:prepare` îl copiază acolo la fiecare deploy.
#
# De aici se servesc doar fișiere statice: niciun script nu se execută și nu se listează nimic. Încărcarea
# verifică deja tipul real al fișierului (fileinfo) și salvează fișierul cu extensia tipului; regulile de mai jos
# sunt a doua barieră. Fără `php_flag` și fără `Options -ExecCGI`: sub mod_lsapi sau cu AllowOverride restrâns pe
# cPanel ar da 500 pe fiecare fișier media.

Options -Indexes

<IfModule mod_mime.c>
    RemoveHandler .php .php3 .php4 .php5 .php7 .php8 .phtml .phar .pht .phps .cgi .pl .py .sh .asp .aspx .jsp .shtml
    RemoveType .php .php3 .php4 .php5 .php7 .php8 .phtml .phar .pht .phps
</IfModule>

<IfModule mod_authz_core.c>
    <FilesMatch "(?i)\.(php\d*|phtml|phar|pht|phps|inc|cgi|pl|py|sh|bash|asp|aspx|jsp|jspx|shtml?|svgz|html?|xhtml|js|mjs|htaccess|htpasswd|ini|env|log)$">
        Require all denied
    </FilesMatch>
    <FilesMatch "^\.">
        Require all denied
    </FilesMatch>
</IfModule>

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    # SVG-urile vin doar de la agenție și sunt sanitizate la upload (P2 WP23); deschise direct, nu rulează scripturi
    # și nu fac cereri (aceeași politică în SvgUploads::CONTENT_SECURITY_POLICY). `.svgz` rămâne blocat mai sus.
    <FilesMatch "(?i)\.svg$">
        Header always set Content-Security-Policy "default-src 'none'; img-src data:; style-src 'unsafe-inline'; font-src data:; sandbox"
    </FilesMatch>
</IfModule>
