Poradnik: Wszystko o pliku .htaccess
Plik .htaccess
to potężne narzędzie do zarządzania serwerem Apache, który pozwala na modyfikowanie ustawień serwera bezpośrednio w katalogu, w którym jest umieszczony. Dzięki niemu możemy wykonywać przekierowania, zabezpieczać strony, blokować boty i wiele więcej. W tym poradniku przyjrzymy się najczęstszym zastosowaniom tego pliku.
1. Czym jest .htaccess?
.htaccess
to plik konfiguracyjny, który jest używany przez serwery Apache do nadpisywania ustawień na poziomie katalogów. Jego nazwa pochodzi od „hypertext access”. Dzięki niemu możesz modyfikować zachowanie serwera dla konkretnej strony internetowej bez konieczności modyfikacji głównych plików konfiguracyjnych serwera.
2. Jak stworzyć plik .htaccess?
Stworzenie pliku .htaccess
jest proste:
- Otwórz dowolny edytor tekstu (np. Notepad, Sublime Text).
- Zapisz pusty plik pod nazwą
.htaccess
(upewnij się, że nie ma rozszerzenia.txt
). - Umieść go w katalogu głównym swojej strony lub w dowolnym katalogu, w którym chcesz nadpisać domyślne ustawienia serwera.
3. Do czego służy plik .htaccess?
Plik .htaccess
służy do wielu różnych celów, w tym:
- Przekierowania URL (np. z HTTP na HTTPS lub z jednej domeny na inną).
- Blokowanie dostępu (np. blokowanie adresów IP lub botów).
- Zarządzanie uprawnieniami (np. ochrona hasłem).
- Obsługa błędów (np. tworzenie niestandardowych stron błędów 404).
- Zarządzanie indeksami (np. ukrywanie lub pokazywanie zawartości katalogów).
4. Przykładowa zawartość pliku .htaccess
Oto prosty przykład zawartości pliku .htaccess
: Przekierowanie na HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ustawienie niestandardowej strony błędu 404
ErrorDocument 404 /404.html
5. Popularne przekierowania w .htaccess
5.1. Przekierowanie 301
Przekierowanie 301 oznacza „przeniesienie na stałe”. Używa się go, aby poinformować wyszukiwarki, że dana strona została na stałe przeniesiona pod inny adres.
Redirect 301 /stara-strona.html https://nowa-strona.pl/nowa-strona.html
5.2. Wymuszenie HTTPS w adresie URL domeny
Aby wymusić, aby wszystkie połączenia były szyfrowane przez HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
5.3. Wymuszenie przedrostka www w adresie URL domeny
Jeżeli chcesz, aby każda strona była dostępna z przedrostkiem www
:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
5.4. Wymuszenie adresu URL bez przedrostka www
Aby domena działała bez przedrostka www
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
5.5. Przekierowanie całej domeny na nową
Gdy chcesz przekierować całą domenę na nowy adres:
Redirect 301 / https://nowa-domena.pl/
6. Własna strona błędu
Za pomocą .htaccess
możesz ustawić własne strony błędów, np. 404, 500 czy 403. Aby to zrobić, wystarczy dodać linijkę kodu:
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
7. Blokowanie adresów IP
7.1. Blokada wszystkich adresów IP
Jeśli chcesz zablokować dostęp wszystkim użytkownikom do określonego katalogu, możesz to zrobić za pomocą:
Order Deny,Allow
Deny from all
7.2. Blokada wszystkich adresów IP z wyjątkiem zdefiniowanych
Jeżeli chcesz zablokować wszystkie adresy IP oprócz kilku wyjątków:
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
Allow from 123.123.123.123
7.3. Blokada wybranych adresów IP
Aby zablokować dostęp dla wybranych adresów IP:
Order Deny,Allow
Deny from 123.123.123.123
8. Blokowanie użytkowników na podstawie strony odsyłającej
Możesz blokować dostęp użytkownikom, którzy trafili na stronę z określonej strony odsyłającej:
RewriteEngine On
RewriteCond %{HTTP_REFERER} example.com [NC]
RewriteRule .* - [F]
9. Zatrzymanie hotlinków
Hotlinkowanie to bezpośrednie osadzanie obrazków z Twojej strony na innych stronach, co może obciążać serwer. Aby temu zapobiec:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?twojadomena\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F]
10. Blokowanie botów
Możesz zablokować dostęp złośliwych botów do Twojej strony:
SetEnvIfNoCase User-Agent "BadBot" bad_bot
Order Allow,Deny
Allow from all
Deny from env=bad_bot
11. Ustawienie domyślnej strony głównej lub folderu
Jeżeli chcesz ustawić inną stronę główną lub domyślną stronę otwieraną w katalogu:
DirectoryIndex index.html home.html
12. Ochrona za pomocą hasła
Za pomocą .htaccess
możesz zabezpieczyć dostęp do folderów hasłem. Do tego będziesz potrzebował również pliku .htpasswd
. Kod w .htaccess
wygląda tak:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /ścieżka/do/.htpasswd
Require valid-user
13. Blokada popularnych prób włamania w systemie WordPress
Aby zabezpieczyć swoją stronę WordPress przed niektórymi typowymi atakami, możesz użyć poniższego kodu:
# Blokowanie dostępu do plików konfiguracyjnych
order allow,deny
deny from all
14. Złożone przekierowania z użyciem wyrażeń regularnych
Zaawansowane przekierowania mogą być wykonane z użyciem wyrażeń regularnych. Na przykład, aby przekierować wszystkie żądania:
RewriteEngine On
RewriteRule ^stara-strona/(.*)$ /nowa-strona/$1 [R=301,L]