Co to jest .htaccess i jak go dodać?
February 1, 2025
Poniżej znajdziesz obszerny poradnik na temat pliku .htaccess
w serwerze Apache, w formie wpisu blogowego. Zawiera omówienie najważniejszych zagadnień, praktyczne przykłady konfiguracji oraz wskazówki dotyczące bezpieczeństwa i optymalizacji wydajności.
1. Podstawy .htaccess
Co to jest .htaccess i jak działa?
Plik .htaccess
(Hypertext Access) to plik konfiguracyjny serwera Apache, który umożliwia lokalne nadpisywanie domyślnych ustawień serwera w wybranym katalogu oraz jego podkatalogach. Dzięki niemu możesz wprowadzać reguły przekierowań, zabezpieczać zasoby czy konfigurować strony błędów – bez edytowania głównego pliku konfiguracyjnego Apache.
Kiedy serwer otrzymuje żądanie, sprawdza, czy w obsługiwanym katalogu (i katalogach nadrzędnych) znajduje się plik .htaccess
. Jeśli go znajdzie, przetwarza zawarte w nim reguły. Uprawnienia do nadpisywania ustawień definiuje dyrektywa AllowOverride
w głównej konfiguracji Apache. Na większości hostingów współdzielonych obsługa .htaccess
jest domyślnie włączona.
Uwaga: stosowanie .htaccess
jest bardzo wygodne, bo zmiany działają natychmiastowo i nie wymagają restartu serwera. Ma to jednak niewielki wpływ na wydajność, gdyż przy każdym żądaniu serwer sprawdza istnienie i zawartość .htaccess
.
Jak aktywować i edytować .htaccess?
Aktywacja: Upewnij się, że w konfiguracji Apache (najczęściej w pliku
httpd.conf
lub wirtualnych hostach) dla danej lokalizacji ustawiona jest dyrektywaAllowOverride All
lub przynajmniejAllowOverride
z wartościami obejmującymi interesujące Cię dyrektywy (np.FileInfo
,AuthConfig
itp.).Edycja: Plik
.htaccess
to zwykły plik tekstowy z kropką na początku nazwy. Na Windows bywa niewidoczny – trzeba włączyć wyświetlanie ukrytych plików lub wprowadzić nazwę w cudzysłowach. Na serwerze możesz edytować go przez FTP lub w panelu hostingowym (z włączoną opcją pokazywania plików ukrytych).Składnia: Dyrektywy konfiguracyjne wpisujemy w osobnych liniach. Linie zaczynające się od
#
to komentarze. Błędy składni mogą spowodować błąd 500 (Internal Server Error).
Jeżeli Twoja reguła nie działa, sprawdź, czy wymagany moduł Apache (np. mod_rewrite
, mod_deflate
, mod_expires
) jest włączony. Dobrą praktyką jest otaczanie reguł blokiem <IfModule>
– dzięki temu unikniesz błędów przy braku modułu.
2. Przekierowania
Przekierowanie 301 i 302
301 (Moved Permanently) – stałe przekierowanie, informuje wyszukiwarki i przeglądarki, że dany adres URL przeniesiono na stałe. Ten typ przekierowania przekazuje też “moc SEO” ze starego adresu na nowy.
302 (Found / Moved Temporarily) – przekierowanie tymczasowe, przydatne, gdy dany URL jest chwilowo niedostępny i chcemy, by wyszukiwarki nie traktowały nowego adresu jako docelowego.
Do najprostszych przekierowań możemy użyć modułu mod_alias
i dyrektywy Redirect
:
Bardziej złożone reguły (zwłaszcza z wyrażeniami regularnymi) konfigurujemy w mod_rewrite
:
Przekierowanie HTTP na HTTPS
Aby wymusić szyfrowane połączenie, możesz przekierować cały ruch z HTTP na HTTPS:
W ten sposób każda próba wejścia przez HTTP jest trwale przekierowywana na odpowiednik HTTPS.
Ustawienie adresu kanonicznego (www lub bez www)
Unikniesz duplikacji treści, gdy zadbasz, by Twoja witryna była dostępna tylko w jednej wersji – np. bez www
.
Przekierowanie na wersję z www
:
Przekierowanie na wersję bez www
:
Przekierowania w oparciu o User-Agent
Możesz przekierowywać użytkowników w zależności od identyfikatora przeglądarki (User-Agent). Przykładowo do wersji mobilnej:
3. Zabezpieczenia
Blokowanie dostępu na podstawie adresu IP
Możesz zablokować określone adresy IP lub całe bloki:
Apache 2.2 (stara metoda):
Apache 2.4 (nowsza metoda):
Możesz też odwrotnie – pozwalać tylko wybranym adresom, resztę blokować.
Ochrona katalogów hasłem (Basic Auth)
Plik .htaccess
w chronionym katalogu:
Plik .htpasswd
zawiera pary login:zaszyfrowane_hasło
. Gdy użytkownik wejdzie do folderu, serwer poprosi o login i hasło.
Zapobieganie hotlinkowaniu
Hotlinking polega na osadzaniu Twoich obrazów na zewnętrznych stronach, co zużywa Twój transfer. Blokada:
Blokowanie określonych User-Agentów
Jeśli w logach widzisz złośliwe boty o konkretnych nazwach User-Agent, możesz je zablokować:
Ograniczenie dostępu do plików i katalogów
Wyłączenie listowania katalogów (błąd 403 przy braku pliku indeksowego):
Blokada wrażliwych plików:
Chroni pliki
.htaccess
,.htpasswd
i inne zaczynające się od.ht
.Zablokuj wybrane rozszerzenia:
Zabezpieczenie folderu uploads (uniemożliwienie wykonania plików
.php
wrzuconych do folderu):
4. Optymalizacja wydajności
Włączenie kompresji Gzip
Redukuje rozmiar danych przesyłanych do przeglądarki. W .htaccess
:
Dzięki temu pliki tekstowe (HTML, CSS, JS, JSON) są automatycznie pakowane przed wysłaniem.
Ustawienie cache przeglądarki (mod_expires)
Przeglądarka przechowuje pliki statyczne przez określony czas, co przyspiesza kolejne wizyty:
Ograniczenie liczby zapytań HTTP
Liczba żądań decyduje o szybkości ładowania strony. Z punktu widzenia .htaccess
ważne są głównie:
Włączenie cache – aby użytkownik nie pobierał tych samych plików przy każdej wizycie.
Kompresja – mniejsze rozmiary plików.
Keep-Alive – aby używać jednego połączenia dla wielu zapytań.
Resztę (łączenie CSS/JS w jeden plik, sprity, lazy loading) wdrażasz po stronie kodu strony.
Konfiguracja Keep-Alive
Pozwala utrzymać jedno połączenie TCP dla wielu plików. Jeśli jest wyłączone na serwerze, można spróbować wymusić w .htaccess
:
Jeśli hosting tego nie respektuje, konieczna jest zmiana w głównej konfiguracji Apache albo w panelu zarządzania serwerem.
5. Inne przydatne ustawienia
Przepisywanie URL-i (mod_rewrite)
Dzięki mod_rewrite
możesz tworzyć przyjazne adresy URL. Przykład przepisywania /produkt/123
do produkt.php?id=123
:
Jest to wewnętrzne przepisywanie – użytkownik nadal widzi /produkt/123
.
Strony błędów (404, 403 itp.)
Możesz zastąpić domyślne komunikaty błędów własnymi stronami:
Plik 404.html
powinien istnieć w podanej ścieżce. Dzięki temu użytkownicy zobaczą spersonalizowaną stronę, a serwer zwróci właściwy kod błędu.
Ustawienia MIME i obsługa plików
AddType – pozwala wymusić określony typ MIME dla danych rozszerzeń:
AddDefaultCharset UTF-8 – ustawia domyślne kodowanie znaków na UTF-8.
AddHandler – można wskazać, że np. pliki
.php5
są interpretowane przez PHP:Nagłówki bezpieczeństwa (CORS, CSP) – np.:
To temat rzeka, ale
.htaccess
jest dobrym miejscem na ustawianie dodatkowych nagłówków.
Podsumowanie
Plik .htaccess
to potężne narzędzie, które pozwala na:
Elastyczne przekierowania (301, 302, adres kanoniczny, wymuszenie HTTPS).
Skuteczne zabezpieczenia (ochrona hasłem, blokady IP, blokady UA, zapobieganie hotlinkom).
Optymalizację wydajności (kompresja Gzip, cache przeglądarki, Keep-Alive).
Konfigurację stron błędów, przepisywanie URL-i, ustawienia MIME i wiele innych.
Każda zmiana w .htaccess
zaczyna działać natychmiast, dzięki czemu jest idealnym rozwiązaniem na hostingach współdzielonych. Trzeba jednak pamiętać, że niepoprawne reguły mogą skutkować błędami 500 lub blokadą dostępu do potrzebnych zasobów. Dlatego najlepiej wprowadzać zmiany po kolei i testować działanie witryny.
Z czasem i praktyką zaczniesz swobodnie korzystać z .htaccess
, zwiększając bezpieczeństwo, wydajność i SEO swojej strony. Powodzenia w konfiguracji!