RewriteEngine On

# Özel hata sayfaları
ErrorDocument 404 /404.php
ErrorDocument 403 /404.php

# Hassas dosyalara doğrudan erişimi engelle
<FilesMatch "^(baglan|veritabani)\.php$">
    Require all denied
</FilesMatch>

<FilesMatch "\.(sql|log|env|bak|backup|ini|sh|bat)$">
    Require all denied
</FilesMatch>

<FilesMatch "^install\.php\.done$">
    Require all denied
</FilesMatch>

# PHPMailer kaynak kodlarına doğrudan erişimi engelle
RewriteRule ^PHPMailer/ - [F,L]

# inc/ klasörüne doğrudan erişimi engelle
RewriteRule ^inc/ - [F,L]

# temalar/ klasörüne doğrudan erişimi engelle (parent include üzerinden yüklenir)
RewriteRule ^temalar/ - [F,L]

# img/ klasöründe PHP çalıştırmayı engelle
<Directory "img">
    php_flag engine off
</Directory>
<FilesMatch "^img/.*\.(php|phtml|php3|php4|php5|php7|phar)$">
    Require all denied
</FilesMatch>

# Var olan fiziksel dosya veya klasöre dokunma
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# /admin → admin.php
RewriteRule ^admin$ admin.php [L,NC]

# /kart → kart.php
RewriteRule ^kart$ kart.php [L,NC]

# /login → login.php
RewriteRule ^login$ login.php [L,NC]

# /logout → logout.php
RewriteRule ^logout$ logout.php [L,NC]

# /blog-detay → blog-detay.php (query string korunur)
RewriteRule ^blog-detay$ blog-detay.php [L,NC,QSA]

# sitemap.xml → sitemap.php
RewriteRule ^sitemap\.xml$ sitemap.php [L]

# manifest.json → manifest.php
RewriteRule ^manifest\.json$ manifest.php [L]

# Genel .php uzantısını gizle
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1.php [L,NC]

# sw.js cache header
<Files "sw.js">
    Header set Cache-Control "no-cache"
</Files>

