W rozmowie z programistami lub hostingodawcą pewnie nie raz spotkałeś się z określeniem “plik .htaccess’’. Jeżeli czytasz ten artykuł, zapewne nie do końca wiesz, co kryje się za tym terminem. Spokojnie! Po tej lekturze będziesz mógł śmiało powiedzieć, że znasz definicję i zastosowanie pliku .htaccess, a nawet wiesz, jak go poprawnie stworzyć.
Plik .htaccess – czym jest?
Na sam początek warto wyjaśnić, czym jest plik .htaccess. Nazwa pochodzi od słów Hypertext Access. .htaccess to plik, który pozwala wprowadzać zmiany w konfiguracji parametrów serwera. Jest to domyślny plik wykorzystywany na serwerach Apache.
Dzięki .htaccess możesz zmieniać zachowania serwera swojej strony internetowej. Plik ten działa w obrębie katalogu, w którym został umieszczony oraz w podkatalogach serwera (o ile nie mają one osobnych plików .htaccess, które zmieniają reguły narzucone przez plik katalogu nadrzędnego).
Dyrektywy określone w pliku konfiguracyjnym .htaccess są odczytywane przy każdym żądaniu wysłanym do serwera. Dzięki temu wszystkie zmiany w pliku widoczne są niezwłocznie po wprowadzeniu.
W jakim celu stosuje się htaccess?
Na pierwszy rzut oka może się wydawać, że plik htaccess nie jest istotny. W końcu to sprawy serwerowe, którymi zajmuje się hostingodawca. Nic bardziej mylnego! W pliku .htaccess możesz wprowadzać zmiany, które mają ogromne znaczenie dla funkcjonowania Twojej strony lub sklepu internetowego. Z tego powodu znajomość jego możliwości jest kluczowa, aby skutecznie zarządzać swoim serwisem. Poniżej znajdziesz najczęstsze przypadki, w których zmiany pliku .htaccess okażą się konieczne.
Blokowanie hotlinkowania
Hotlinkowanie to sytuacja, w której inna strona korzysta ze zdjęć zamieszczonych na Twoim serwerze poprzez podanie w atrybucie src odnośnika do Twojej strony. Blokowanie hotlinkowania możesz ustawić w pliku htaccess poprzez dodanie odpowiedniego skryptu. W ten sposób możesz zablokować hotlinkowanie całkowicie lub tylko dla konkretnych domen. W tym celu wykorzystaj poniższy wpis do pliku konfiguracyjnego:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.*)?mojadomena.pl [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*.(jpeg|gif|bmp|png)$ – [NC,F,L]
Blokowanie IP i botów
W pliku .htaccess możesz także ustawić blokowanie konkretnych adresów IP, z których na przykład generowany jest nienaturalny ruch do Twojej domeny. Blokadę wybranych adresów IP ustawisz poprzez poniższy zapis:
Order allow,deny
Allow from all
Deny from xxx.xxx.xxx.xxx
W miejsce “xxx.xxx.xxx.xxx” wpisz adres IP, który chcesz zablokować.
Ponadto z pomocą pliku konfiguracyjnego zablokujesz również konkretne boty, które np. nadmiernie crawlują Twoją stronę, tym samym spowalniając ją. W tym celu użyj poniższej konfiguracji:
RewriteCond %{HTTP_USER_AGENT} ^(nazwa_bota|nazwa_innego_bota) [NC]
RewriteRule .* – [F]
Przekierowania 301
Wykorzystując plik .htaccess, możesz ustawić stałe przekierowanie 301 lub tymczasowe 302 dla całej domeny lub jej poszczególnych adresów URL. Aby to zrobić, musisz włączyć moduł mod_rewrite poprzez wpisanie komendy:
RewriteEngine on
Następnie dodaj nową konfigurację, zapisz plik i wgraj z powrotem do odpowiedniego katalogu na serwerze.
Jeżeli chcesz przekierować całą domenę, użyj komendy:
Redirect 301 / https://mojanowadomena.pl/
Jeżeli chcesz przekierować konkretny adres URL, wykorzystaj zapis:
Redirect 301 /strona.html http://mojanowadomena.pl/nowa_strona.html
Przekierowania wersji strony z www i bez www
Zazwyczaj strony internetowe dostępne są zarówno w wersji z przedrostkiem www, jak i bez niego. Oznacza to, że możesz wejść na tę stronę, wpisując URL z i bez przedrostka. Z perspektywy pozycjonowania serwisu jest to niekorzystna sytuacja, gdyż indeksowane są dwie wersje tej samej strony. Dlatego optymalnym rozwiązaniem jest ustawienie przekierowania do jednej wersji za pomocą zapisu:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mojadomena.pl(.*) [NC]
RewriteRule ^(.*)$ http://www.mojadomena.pl/$1 [R=301,L]
Przekierowanie z http na https
Stosowanie szyfrowania danych z pomocą protokołu https to obecnie standard, dlatego każda strona dbająca o bezpieczeństwo użytkowników powinna w niego zainwestować. Przekierowanie z nieszyfrowanej wersji serwisu (http) na szyfrowaną (https) ustawisz w pliku konfiguracyjnym za pomocą:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://mojadomena.pl/$1 [R=301,L]
Dzięki temu po wpisaniu adresu URL z przedrostkiem http nastąpi automatyczne przekierowanie użytkownika na wersję szyfrowaną.
Tworzenie przyjaznych linków
Domyślne ustawienia tworzenia adresów URL bardzo często zawierają ciągi liczb lub nieuporządkowaną strukturę folderów. Przez to linki stają się nieprzyjazne dla użytkowników (trudno je zapamiętać lub udostępnić). Z pomocą pliku konfiguracyjnego .htaccess możesz zmienić regułę, według której tworzone są linki wewnątrz Twojego serwisu.
RewriteEngine on
# przykład z www.strona.pl/strona/dalszyciagsciezki
RewriteRule ^strona/([^/.]+)/?$ index.php?strona=$1 [L]
#przykład z www.strona.pl/dalszyciagsciezki
RewriteRule ^/([^/.]+)/?$ index.php?strona=$1 [L]
Ustawienie własnych stron błędów
Błędy na stronach internetowych są normalną sprawą. Szczególnie te, które wynikają np. z wpisania przez użytkownika URL, który nie istnieje w serwisie. Wtedy powinna pojawić się strona błędu 404. Jej wyświetlanie możesz ustawić właśnie z pomocą pliku .htaccess. W tym celu użyj poniższego zapisu:
ErrorDocument 404 /blad404.html
W plik konfiguracyjnym możesz również ustawić strony dla innych błędów takich jak 403 (strona z zakazem dostępu) czy 500 (wewnętrzny błąd serwera). Pamiętaj, aby przed ustawieniem zmian w htaccess wgrać na serwer customowe strony obsługujące konkretne błędy.
Zabezpieczenie strony hasłem
Są momenty, w których nie chcesz, aby zawartość Twojej strony była dostępna dla wszystkich użytkowników. Może się tak zdarzyć np., gdy dopiero tworzysz stronę lub ją testujesz. Wtedy przydatną opcją jest zablokowanie całej strony lub jej konkretnych sekcji hasłem. Możesz to zrobić z pomocą plików .htaccess i .htpasswd. Dzięki temu, gdy użytkownik będzie chciał wejść na stronę, zostanie poproszony o podanie loginu i hasła. Dopiero po wpisaniu tych danych uzyska dostęp do zawartości strony.
Przechowywanie danych w pamięci podręcznej
Wyróżniamy dwa rodzaje pamięci podręcznej (tzw. cache) – po stronie serwera i po stronie klienta. Cache po stronie serwera polega na przygotowaniu “gotowej” wersji strony, dzięki czemu skraca się czas jej generowania. Natomiast pamięć podręczna po stronie klienta dotyczy danych zapisanych w przeglądarce internetowej użytkownika np. grafik, stylów CSS, które nie muszą być ponownie ładowane z serwera przy kolejnym wejściu na stronę (są ładowane z poziomu urządzenia użytkownika). W pliku .htaccess możesz ustawić, po jakim czasie pamięć podręczna po stronie klienta powinna być czyszczona, a pliki z serwera pobrane ponownie. Zrobisz to z pomocą reguły Expire.
Inne zastosowanie pliku .htaccess
Plik możesz wykorzystać również do:
- ustawienia wersji PHP;
- zmiany parametrów PHP np. czasu wykonywania się polecenia;
- przyspieszenia strony internetowej np. poprzez włączenie kompresji plików;
- zdefiniowania strony startowej;
- blokowania dostępu do konkretnych plików;
- konfiguracji bezpieczeństwa strony np. poprzez blokadę listowania folderów.
Jak stworzyć plik htaccess?
Istnieje kilka opcji utworzenia pliku konfiguracyjnego .htaccess. Wybór zależy tak naprawdę od poziomu zaawansowania zmian, które chcesz wprowadzać i Twoich umiejętności. Zobacz, z jakich metod możesz skorzystać.
Edytor tekstowy
.htaccess to zwykły plik tekstowy, dlatego do jego utworzenia i wprowadzania zmian wystarczy klasyczny edytor tekstowy np. Notatnik. Możesz skorzystać również z bardziej zaawansowanego narzędzia np. Notepad++, który ułatwi Ci odczytanie struktury kodu. Po utworzeniu pliku, wprowadzeniu wpisów i zapisaniu zmian, musisz go jedynie wgrać na serwer do odpowiedniego katalogu, w którym ma obowiązywać. Jeżeli będziesz chciał wprowadzić kolejne zmiany w pliku, pobierz go z serwera, dodaj kolejne reguły i powtórz procedurę wgrania na serwer.
.htaccess generator
Jeżeli nie czujesz się na siłach, aby samodzielnie dodawać wpisy w pliku .htaccess, możesz skorzystać z dostępnych generatorów. Z pomocą takich narzędzi utworzysz wszystkie niezbędne reguły, a następnie pobierzesz gotowy plik, który musisz jedynie wrzucić na serwer. Przykładowy generator htaccess. wygląda następująco:
Źródło: .htaccess Generator
.htaccess WordPress
Jak w przypadku większości stron, plik .htaccess w WordPressie znajduje się w katalogu głównym na serwerze, na którym postawiona jest strona. Zmiany w pliku .htaccess na stronie opartej o WordPressa możesz wprowadzać za pomocą edytora tekstowego, generatora pliku lub jednej z dostępnych wtyczek np. Yoast SEO.
Składnia pliku .htaccess
Tworząc plik konfiguracyjny, musisz pamiętać o kilku ważnych zasadach. Składania pliku jest podobna do składni httpd.conf. Każdy wpis tworzy się w osobnym wierszu. Zacznij go od nazwy reguły, a kolejne argumenty oddzielaj białymi znakami (spacjami). Aby zachować logikę i odpowiednią strukturę, warto dodawać również komentarze, stosując znak #. Dzięki temu będziesz wiedzieć, jaką funkcję uruchamia dana reguła.
Bardzo ważna jest również wielkość liter – zawsze zapisuj nazwę “.htaccess” małymi literami i z kropką na początku. Dlaczego? Zamieszczenie kropki oznacza, że jest to plik ukryty. Nie myl jej z kropką zamieszczoną przed rozszerzeniem pliku np. “.png”.
Nazwę pliku możesz zmieniać – nie musi być stałą wartością “.htaccess”.
Co zrobić, gdy .htaccess nie działa?
Może zdarzyć się tak, że po wprowadzeniu zmian w pliku i wgraniu go na serwer, wyskakuje błąd. Jeżeli tak się stanie, zweryfikuj, czy:
- uruchomiłeś mod_rewrite;
- plik nie jest blokowany przez administratora serwera przez AllowOverride;
- nie popełniłeś błędu podczas wpisywania reguł (np. literówek) – to najczęstszy błąd, który powoduje wyświetlenie błędu 500 po stronie serwera.