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

# جلوگیری از دسترسی مستقیم به فایل‌های حساس
<FilesMatch "\.(sql|log|md)$">
  Require all denied
</FilesMatch>

<IfModule mod_php7.c>
  php_flag display_errors off
</IfModule>
<IfModule mod_php8.c>
  php_flag display_errors off
</IfModule>

# =========================================================
# هدرهای امنیتی HTTP (روی همه پاسخ‌های سایت، شامل تمام فروشگاه‌ها)
# =========================================================
<IfModule mod_headers.c>
  # جلوگیری از باز شدن سایت داخل iframe یک دامنه دیگر (Clickjacking)
  Header always set X-Frame-Options "SAMEORIGIN"
  # جلوگیری از حدس زدن نوع فایل توسط مرورگر (MIME-sniffing)
  Header always set X-Content-Type-Options "nosniff"
  # کنترل ارسال آدرس صفحه فعلی به سایت‌های دیگر هنگام کلیک روی لینک خروجی
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  # غیرفعال‌سازی دسترسی به دوربین/میکروفون/موقعیت مکانی توسط این سایت
  Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"

  # توجه: Content-Security-Policy اینجا (در .htaccess) تنظیم نمی‌شود چون
  # این پروژه چندمستأجری است و فایل‌های استاتیک (assets/themes/uploads)
  # همیشه از دامنه‌ی اصلی پلتفرم بارگذاری می‌شوند، حتی وقتی صفحه‌ی جاری
  # روی ساب‌دامین/دامنه‌ی شخصی یک فروشگاه باز شده — یعنی مبدأ (origin) آن
  # فایل‌ها با مبدأ صفحه فرق دارد. چون .htaccess نمی‌تواند این دامنه‌ی
  # اصلی را که به‌صورت پویا در config.php (SITE_URL) تعریف می‌شود بشناسد،
  # CSP به‌جای اینجا در includes/functions.php (تابع send_security_headers)
  # به‌صورت پویا و با دانستن هر دو دامنه ساخته و ارسال می‌شود.

  # Strict-Transport-Security: فقط زمانی توسط مرورگر در نظر گرفته می‌شود
  # که پاسخ واقعاً روی HTTPS ارسال شده باشد (env=HTTPS)؛ روی هاست‌های
  # بدون SSL این هدر اصلاً ارسال نمی‌شود و مشکلی ایجاد نمی‌کند.
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS
</IfModule>

# =========================================================
# مسیریابی چندفروشگاهی (Multi-Tenant Routing) — نسخه ساب‌دامینی
# آدرس هر فروشگاه اکنون یک ساب‌دامین است، نه یک پیشوند در مسیر:
#   https://username1.yourdomain.com/
#   https://username1.yourdomain.com/product.php?id=5
#   https://username1.yourdomain.com/admin/login.php
#
# چون همه‌ی ساب‌دامین‌های وایلدکارد (*.yourdomain.com) روی همین یک
# پوشه (public_html) اجرا می‌شوند، فایل‌های واقعی پروژه (index.php،
# admin/login.php و ...) دقیقاً با همان مسیر درخواستی مطابقت دارند و
# دیگر نیازی به حذف/بازنویسی پیشوند نامک فروشگاه از URL نیست. تشخیص
# فروشگاه اکنون در کد PHP (includes/functions.php -> current_store_slug)
# از روی هدر Host انجام می‌شود، نه از روی مسیر URL.
# =========================================================
<IfModule mod_rewrite.c>
  RewriteEngine On

  # اگر خودِ فایل یا پوشه به‌صورت واقعی وجود دارد، همان مستقیم اجرا شود.
  RewriteCond %{REQUEST_FILENAME} -f [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^ - [L]

  # sitemap.xml -> sitemap.php (هم روی دامنه اصلی و هم روی ساب‌دامین هر فروشگاه)
  RewriteRule ^sitemap\.xml$ sitemap.php [L,QSA]

  # robots.txt پویا (چون Sitemap باید به میزبان فعلی اشاره کند، نه همیشه دامنه اصلی)
  RewriteRule ^robots\.txt$ robots.php [L,QSA]
</IfModule>
