# 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"