# Konfiguracja serwera dla hostingu VH.pl (LiteSpeed czyta .htaccess tak jak Apache).
# Plik trafia do dist/ przy budowaniu i wgrywa się razem ze stroną do public_html.
#
# Każda dyrektywa jest osłonięta warunkiem <IfModule> na moduł, który ją faktycznie dostarcza.
# Bez tego serwer bez danego modułu zwraca błąd 500 na CAŁEJ stronie, a nie tylko pomija regułę.

# ── Wymuszenie HTTPS i wersji bez www ───────────────────────────────
# Pierwszy warunek ogranicza przekierowanie WYŁĄCZNIE do docelowej domeny. Dzięki temu na
# adresie testowym (IP serwera, adres tymczasowy) strona działa normalnie, zamiast odbijać
# każde żądanie na domenę, która jeszcze nie istnieje. Po podpięciu domeny działa bez zmian.
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^(www\.)?geodeta-kinas\.pl$ [NC]
  RewriteCond %{HTTPS} off [OR]
  RewriteCond %{HTTP_HOST} ^www\. [NC]
  RewriteRule ^(.*)$ https://geodeta-kinas.pl/$1 [R=301,L]
</IfModule>

# ── Własna strona błędu 404 ─────────────────────────────────────────
# ErrorDocument wymagałby ścieżki od korzenia serwera, więc przestałby działać po
# przeniesieniu strony do innego katalogu. Zamiast tego przekazujemy obsługę skryptowi
# 404.php leżącemu obok — reguła bez ukośnika na początku liczy się od katalogu tego pliku.
<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^ 404.php [L]
</IfModule>

# ── Blokada dostępu do pliku z logiem trybu testowego ───────────────
# Require pochodzi z mod_authz_core (Apache 2.4). W produkcji ten plik i tak nie powstaje,
# bo skrypt zapisuje go wyłącznie w trybie testowym na localhoście.
<IfModule mod_authz_core.c>
  <FilesMatch "^wiadomosci-test\.log$">
    Require all denied
  </FilesMatch>
</IfModule>

# ── Typy MIME dla nowoczesnych formatów obrazów ─────────────────────
# Bez tego serwer nieznający AVIF wysyła zdjęcia jako plik do pobrania i hero się nie wyświetla.
<IfModule mod_mime.c>
  AddType image/avif .avif
  AddType image/webp .webp
  AddType font/woff2 .woff2
</IfModule>

# ── Pamięć podręczna przeglądarki i nagłówki bezpieczeństwa ─────────
# Pliki w /_astro/ mają skrót treści w nazwie, więc mogą leżeć w cache rok.
# HTML musi być sprawdzany za każdym razem, inaczej zmiany w treści byłyby niewidoczne.
<IfModule mod_headers.c>
  <FilesMatch "\.(avif|webp|jpg|jpeg|png|svg|css|js|woff2)$">
    Header set Cache-Control "public, max-age=31536000, immutable"
  </FilesMatch>
  <FilesMatch "\.html$">
    Header set Cache-Control "public, max-age=0, must-revalidate"
  </FilesMatch>

  Header always set X-Content-Type-Options "nosniff"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set X-Frame-Options "SAMEORIGIN"
</IfModule>

# ── Kompresja ───────────────────────────────────────────────────────
# AddOutputFilterByType dostarcza mod_filter, NIE mod_deflate — warunek musi sprawdzać mod_filter.
<IfModule mod_filter.c>
  <IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/javascript application/json image/svg+xml
  </IfModule>
</IfModule>

# ── Strona domyślna katalogu ────────────────────────────────────────
<IfModule mod_dir.c>
  DirectoryIndex index.html index.php
</IfModule>
