Opis problemu:
Wielu wydawców konfiguruje plik .htaccess fragmentarycznie – dodając pojedyncze reguły CSP, zabezpieczenia lub wyjątki „na próbę”, często na podstawie różnych porad z Internetu. Prowadzi to do konfliktów między nagłówkami (CSP, CORS, X-Frame-Options), problemów z wyświetlaniem reklam, blokowania bibliotek zewnętrznych (Bootstrap, YouTube, Google Fonts) oraz spadku wydajności strony. Dodatkowo brak odpowiednich ustawień cache i kompresji negatywnie wpływa na szybkość ładowania strony.
Skutek:
Strona działa niestabilnie, reklamy MediaBoxy nie wyświetlają się poprawnie, a każda kolejna poprawka zwiększa ryzyko nowych błędów technicznych. Wydawca traci czas na diagnozowanie problemów zamiast skupić się na rozwoju serwisu i monetyzacji.
Rozwiązanie:
Dlatego przygotowaliśmy kompletne, gotowe rozwiązanie – jeden spójny plik .htaccess, który można wgrać bezpośrednio na serwer. Zawiera on wszystkie niezbędne ustawienia: CSP, CORS, zabezpieczenia, cache, kompresję oraz pełną obsługę MediaBoxy, Bootstrap, YouTube i Google Fonts.
# ═══════════════════════════════════════════════════════════════
# .htaccess - Konfiguracja z obsługą MediaBoxy
# Bezpieczeństwo + Reklamy + Bootstrap + YouTube + Google Fonts
# ═══════════════════════════════════════════════════════════════
RewriteEngine On
# Wymuszaj HTTPS (odkomentuj jeśli masz SSL)
# RewriteCond %{HTTPS} !=on
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ═══════════════════════════════════════════════════════════════
# CONTENT SECURITY POLICY - Kluczowa konfiguracja!
# ═══════════════════════════════════════════════════════════════
<IfModule mod_headers.c>
# CSP - Pozwala na MediaBoxy + Bootstrap + YouTube + Google
Header always set Content-Security-Policy "\
default-src 'self'; \
frame-src 'self' \
https://mediaboxy.pl https://*.mediaboxy.pl \
https://www.youtube.com https://www.youtube-nocookie.com \
https://www.google.com/maps; \
script-src 'self' 'unsafe-inline' 'unsafe-eval' \
https://mediaboxy.pl \
https://cdn.jsdelivr.net \
https://code.jquery.com \
https://ajax.googleapis.com \
https://maxcdn.bootstrapcdn.com \
https://www.youtube.com \
https://www.gstatic.com \
https://maps.googleapis.com; \
style-src 'self' 'unsafe-inline' \
https://cdn.jsdelivr.net \
https://maxcdn.bootstrapcdn.com \
https://fonts.googleapis.com; \
font-src 'self' \
https://cdn.jsdelivr.net \
https://fonts.gstatic.com \
https://maxcdn.bootstrapcdn.com; \
img-src 'self' data: https: http: \
https://i.ytimg.com \
https://maps.googleapis.com; \
media-src 'self' https: http:; \
connect-src 'self' https://mediaboxy.pl; \
frame-ancestors 'self';"
# Podstawowe security headers
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
# ═══════════════════════════════════════════════════════════════
# BEZPIECZEŃSTWO - Ukryj wrażliwe pliki
# ═══════════════════════════════════════════════════════════════
<FilesMatch "^\.">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|sql|env|bak)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
# Zablokuj dostęp do .git, .env
RedirectMatch 403 ^/\.(git|svn)
RedirectMatch 403 /\.env
# ═══════════════════════════════════════════════════════════════
# OCHRONA PRZED ATAKAMI
# ═══════════════════════════════════════════════════════════════
<IfModule mod_rewrite.c>
# Blokuj SQL injection
RewriteCond %{QUERY_STRING} (union|select|insert|drop|delete) [NC]
RewriteRule ^(.*)$ - [F,L]
# Blokuj złośliwe boty
RewriteCond %{HTTP_USER_AGENT} (libwww|wget|python|nikto|curl|scan) [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
# ═══════════════════════════════════════════════════════════════
# KOMPRESJA GZIP
# ═══════════════════════════════════════════════════════════════
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css text/javascript
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml
</IfModule>
# ═══════════════════════════════════════════════════════════════
# CACHE - Statyczne pliki
# ═══════════════════════════════════════════════════════════════
<IfModule mod_expires.c>
ExpiresActive On
# Images
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
# JavaScript i CSS
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 1 hour"
</IfModule>
# ═══════════════════════════════════════════════════════════════
# KONIEC KONFIGURACJI
#
# Ten plik zawiera:
# CSP dla MediaBoxy, Bootstrap, YouTube, Google Fonts
# Bezpieczeństwo (SQL injection, XSS, ukrycie plików)
# Kompresja GZIP
# Cache dla wydajności
#
# REKLAMY MEDIABOXY BĘDĄ DZIAŁAĆ!
# ═══════════════════════════════════════════════════════════════
Instrukcja wdrożenia:
Zrób backup swojego obecnego pliku .htaccess
Skopiuj powyższy kod do nowego pliku i zapisz jako .htaccess
Wgraj plik do głównego katalogu swojej strony (np. /public_html/)
Sprawdź czy strona działa poprawnie
Otwórz stronę i naciśnij CTRL+SHIFT+R (hard refresh)
Sprawdź Console (F12) - nie powinno być błędów CSP/CORS
Sprawdź czy reklamy MediaBoxy się wyświetlają
Ważne!
Jeśli po wgraniu pliku widzisz błąd 500 Internal Server Error, prawdopodobnie moduł mod_headers nie jest włączony na serwerze. Skontaktuj się z hostingiem lub włącz go komendą:
a2enmod headers && systemctl restart apache2
Wnioski:
Problemy techniczne wynikały z niespójnej, fragmentarycznej konfiguracji pliku .htaccess, która powodowała konflikty nagłówków, blokowanie reklam oraz obniżenie wydajności strony. Zastosowanie jednego, kompletnego i sprawdzonego pliku .htaccess eliminuje te błędy, upraszcza wdrożenie i zapewnia poprawne działanie reklam MediaBoxy, bibliotek zewnętrznych oraz mechanizmów bezpieczeństwa i wydajności.