#############################################
# 🔐 جلوگیری از نمایش لیست فایل‌ها در پوشه‌ها
#############################################
Options -Indexes

#############################################
# ⛔️ جلوگیری از دسترسی به فایل‌های حساس
#############################################

# فایل‌های پیکربندی (config.php و ...)
<FilesMatch "^(config\.php|db\.php|env\.php|\.env|\.htaccess)$">
    Order allow,deny
    Deny from all
</FilesMatch>

# جلوگیری از اجرای فایل‌های PHP در پوشه‌های خاص مثل uploads
<Directory "uploads">
    <FilesMatch "\.php$">
        Order allow,deny
        Deny from all
    </FilesMatch>
</Directory>

#############################################
# 🛡️ جلوگیری از اجرای فایل‌های آپلود شده مشکوک
#############################################
<FilesMatch "\.(bak|config|sql|fla|psd|ini|log|sh|inc|swp|dist)$">
    Order allow,deny
    Deny from all
</FilesMatch>

#############################################
# 📄 جلوگیری از دسترسی مستقیم به فایل‌های خاص
#############################################
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh)$">
    Require all denied
</FilesMatch>

#############################################
# 🌐 محدود کردن انواع دسترسی‌های مشکوک
#############################################
# جلوگیری از hotlink تصاویر و فایل‌ها
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?mpour-app\.ir [NC]
RewriteRule \.(jpg|jpeg|png|gif|bmp|webp)$ - [F,NC]

#############################################
# 🔒 محافظت از پوشه‌های خاص
#############################################
# قفل کردن پوشه config
<Directory "config">
    Order deny,allow
    Deny from all
</Directory>

# قفل کردن پوشه‌های پشتیبان یا لاگ‌ها
<DirectoryMatch "(^|/)(logs|backups|private|secret)/">
    Order allow,deny
    Deny from all
</DirectoryMatch>

#############################################
# ✅ کش کردن فایل‌های استاتیک برای بهبود سرعت
#############################################
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpg "access plus 30 days"
  ExpiresByType image/jpeg "access plus 30 days"
  ExpiresByType image/gif "access plus 30 days"
  ExpiresByType image/png "access plus 30 days"
  ExpiresByType text/css "access plus 1 week"
  ExpiresByType text/javascript "access plus 1 week"
  ExpiresByType application/javascript "access plus 1 week"
  ExpiresByType application/x-javascript "access plus 1 week"
  ExpiresByType application/font-woff2 "access plus 1 month"
</IfModule>

#############################################
# ✅ فشرده‌سازی GZIP برای افزایش سرعت سایت
#############################################
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/javascript application/json
</IfModule>

#############################################
# ✅ جلوگیری از مرورگرهای بد (User-Agent Filtering)
#############################################
BrowserMatchNoCase "BadBot" bots
BrowserMatchNoCase "HTTrack" bots
BrowserMatchNoCase "wget" bots
BrowserMatchNoCase "curl" bots
Order Allow,Deny
Allow from all
Deny from env=bots
