.htaccess to plik konfiguracyjny serwera WWW (Apache i LiteSpeed) leżący w katalogu strony. Steruje przekierowaniami, „ładnymi” adresami WordPressa, blokadami dostępu i nagłówkami - a każda literówka w nim kładzie całą stronę błędem 500. Dlatego obowiązuje jedna zasada: przed edycją kopia, po edycji natychmiastowy test.
Gdzie jest i dlaczego go nie widzisz
Plik leży w katalogu głównym strony (public_html), a nazwa zaczyna się od kropki - czyli jest ukryty. W FileZilli włącz Serwer - Wymuś pokazywanie plików ukrytych; menedżery plików w panelach mają analogiczny przełącznik. Działa kaskadowo: reguły z katalogu nadrzędnego obowiązują też w podkatalogach, a .htaccess w podkatalogu może je nadpisać - stąd bywa, że problem „siedzi” w pliku piętro wyżej. Na serwerach nginx plik nie działa wcale - tam konfigurację ustawia się po stronie hostingu.
Co WordPress trzyma w .htaccess
Standardowy blok między znacznikami # BEGIN WordPress ... # END WordPress obsługuje bezpośrednie odnośniki (ładne adresy wpisów). Nie edytuj wnętrza tego bloku - WordPress go nadpisuje; własne reguły dodawaj powyżej. Jeśli blok zniknie (np. po migracji), podstrony zaczną zwracać 404 - wygenerujesz go na nowo, klikając „Zapisz zmiany” w Ustawienia - Bezpośrednie odnośniki.
Najprzydatniejsze reguły z przykładami
Przekierowanie 301 pojedynczego adresu
Redirect 301 /stara-podstrona/ https://twojadomena.pl/nowa-podstrona/
Podstawa przy porządkach w strukturze strony - stary adres oddaje moc SEO nowemu.
Wymuszenie HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Uwaga: tylko w jednym miejscu (nie równolegle we wtyczce) - podwójne wymuszanie kończy się pętlą przekierowań. Kontekst całej układanki HTTPS opisuje tekst strona nie jest bezpieczna.
Blokada katalogu lub pliku
<Files "wp-config.php">
Require all denied
</Files>
Wyłączenie listowania katalogów
Options -Indexes
Cache przeglądarki dla plików statycznych
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/webp "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
</IfModule>
Wtyczki cache (np. LiteSpeed Cache) dopisują takie sekcje same - to ich znaczniki widujesz w pliku; więcej w tekście o LiteSpeed na hostingu.
Bezpieczna procedura edycji
- Pobierz kopię obecnego pliku (albo zmień nazwę kopii na
.htaccess.bakna serwerze). - Dodawaj reguły pojedynczo - jedna zmiana, zapis, odświeżenie strony.
- Strona padła błędem 500? Przywróć kopię - to najczęstsza przyczyna tej awarii, którą opisujemy w tekście o błędzie 500. Zwykle winna literówka lub dyrektywa niedostępna na Twoim hostingu.
- Testuj przekierowania w trybie prywatnym - przeglądarka zapamiętuje 301 i potrafi pokazywać stan sprzed poprawki.
Najczęstsze pytania
Nie mam pliku .htaccess - czy to błąd?
Najpierw upewnij się, że widzisz pliki ukryte. Jeśli naprawdę go nie ma, a strona działa - serwer używa ustawień domyślnych; WordPress utworzy plik przy zapisie bezpośrednich odnośników.
Czy .htaccess spowalnia stronę?
Minimalnie - serwer czyta go przy każdym żądaniu. Kilkadziesiąt reguł nie ma znaczenia; problemem bywają dopiero tysiące linii przekierowań, które lepiej przenieść do wtyczki lub mapy przekierowań.
Czym różni się Redirect od RewriteRule?
Redirect to proste „stary adres - nowy adres”. RewriteRule obsługuje wzorce i warunki (mod_rewrite) - nim działa wymuszanie HTTPS czy ładne adresy WordPressa. Do pojedynczych przekierowań wystarcza Redirect 301.
Czy na moim hostingu .htaccess w ogóle działa?
Na Apache i LiteSpeed (zdecydowana większość hostingów współdzielonych w Polsce) - tak. Szybki test: dodaj linię Options -Indexes i sprawdź, czy strona nadal działa; jeżeli hosting ignoruje plik lub go zabrania, dopytaj pomoc techniczną.
Podsumowanie
.htaccess to najpotężniejszy plik, jaki możesz zepsuć jedną literówką: przekierowania, HTTPS, blokady i adresy wpisów w jednym miejscu. Trzy nawyki czynią go bezpiecznym - kopia przed edycją, jedna zmiana naraz, własne reguły poza blokiem WordPressa. A gdy strona po edycji leży, przywrócenie kopii naprawia ją w 30 sekund.