# Włącz moduł rewrite
RewriteEngine On
# Wyświetlanie błędów PHP tylko dla mod_php
php_flag display_errors On
php_value error_reporting E_ALL
# Ustaw domyślną stronę kodowania
AddDefaultCharset UTF-8
# Blokada dostępu do plików wrażliwych
Require all denied
Order Allow,Deny
Deny from all
# Przekierowanie z www na bez www (opcjonalne)
# RewriteCond %{HTTP_HOST} ^www\.togethere\.cloud$ [NC]
# RewriteRule ^(.*)$ https://togethere.cloud/$1 [R=301,L]
# Wymuszenie HTTPS (odkomentuj gdy będzie certyfikat SSL)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Ping-Pong 1v1 WebSocket proxy do lokalnego serwera Node.js
RewriteCond %{REQUEST_URI} ^/ping-pong-1v1/?$ [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule ^ping-pong-1v1/?$ ws://127.0.0.1:8088/ [P,L]
RewriteRule ^ping-pong-1v1/health$ http://127.0.0.1:8088/health [P,L]
# Usuwanie .php z URL - przekierowanie 301 (tylko dla GET, nie dla POST)
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
# Przekierowanie na folder z trailing slash
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.+)$ /$1/ [R=301,L]
# Automatyczne przekierowanie na index.php w folderze
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^(.+)/$ $1/index.php [L]
# Dodawanie .php do plików (wewnętrznie) - tylko jeśli nie jest folderem
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]
# Strony błędów (opcjonalne)
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
# Kompresja GZIP
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
# Cachowanie
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"