Co to jest .htaccess? Co to znaczy i czym jest plik .htaccess?

.htaccess oznacza skrót od słowa Hypertext Access. Htaccess to domyślny plik konfiguracyjny serwera www Apache. Pliki tego typu określają podstawowe ustawienia dla katalogu i podkatalogów znajdujących się na serwerze. Pliki .htaccess mogą być wykorzystywane do zmian zachowań serwera. 

Plik konfiguracyjny .htaccess odczytywany jest przy każdym żądaniu, które dotyczy plików danego katalogu, a więc jego modyfikacja natychmiastowo wpływa na zachowanie się serwera.

Generator .htaccess

Generator pliku .htaccess
Generator pliku .htaccess

Po co jest .htaccess?

Plik .htaccess służy do zmiany zachować serwera www Apache. Konfiguracja pliku .htacces polega na podawaniu nowych, konkretnych dyrektyw lub zmianę istniejących dyrektyw ustawionych w głównym pliku konfiguracyjnym (httpd.conf).

Przykładowe zastosowania pliku .htacces to:

  • Przekierowania domeny na inną domenę
  • Przekierowania strony z wersji bez www na wersję z www
  • Przekierowania strony z wersji www na wersję bez www
  • Przekierowanie strony na wersję z bezpiecznym protokołem HTTPS
  • Włącz cache po stronie przeglądarki
  • Wyłączenie listowanie katalogów
  • Włączenie kompresji plików
  • Zablokowanie botów
  • Zablokowanie hotlinkowania
  • Ustawienie pliku startowego strony
  • Ustawienie własnej strony błędów 400, 401, 403, 404, 500
  • Utworzenia własnej strony błędu http np. przyjaznej wersji strony 404
  • Blokowanie adresów IP
  • Zabezpieczenia strony internetowej hasłem

Jak stworzyć .htaccess - jak powinien wyglądać plik?

Htaccess to zwykły plik tekstowy. Do jego stworzenia lub wprowadzania zmian wystarczy prosty edytor tekstowy, taki jak np. Notatnik.

Składania pliku jest dokładnie taka sama, jak innych plików konfiguracji httpd. Każda reguła jest zapisywana w osobnej linii; zaczyna się nazwą reguły, a argumenty są oddzielana białymi znakami. Komentarze rozpoczynają się znakiem #.
Plik powinien mieć nazwę dokładnie .htaccess - z kropką na początku i bez żadnych dodatkowych znaków. Nie jest to rozszerzenie pliku takie jak .txt, ale cała nazwa.

Nazwa pliku nie zawsze musi przyjąć postać .htaccess. Może ona być zmieniona w konfiguracji httpd przez regułę AccessFileName np. na .config.

W systemach Windows wiele narzędzi, w tym eksplorator plików, nie pozwoli na zmianę nazwy na .htaccess. Narzędzia te wymagać będą podania nazwy przed kropką.

Ze względu na takie zachowanie, często lokalnie plik jest zapisywany z nazwą bez kropki, która jest dodawana poprzez edycję nazwy po wysłaniu pliku na serwer.

Co zrobić gdy .htaccess nie działa?

Jeżeli po wprowadzeniu zmian konfiguracyjnych w pliku .htaccess serwer nie działa tak jak powinien sprawdź także pliki .htaccess w katalogach nadrzędnych. Wpływ na działanie strony ma plik .htaccess w katalogu, którego dotyczy zapytanie oraz wszystkie pliki .htaccess w katalogach nadrzędnych.

Jeśli wprowadzona zmiana nadal nie działa, być może taka zmiana nie jest dozwolona przez administratora przez wpis AllowOverride. W takim przypadku konieczny może być kontakt z hostingodawcą.

Jeśli jednak po zmianie w pliku .htaccess pojawia się błąd HTTP 500 Internal server error, to zwykle nie wynika on z winy serwera. Należy wtedy sprawdzić czy wszystkie zmiany zostały prawidłowo wprowadzone. Błąd w tym pliku także powoduje taki komunikat.

Kiedy używać .htaccess?

.htaccess jest zwykle jedyną możliwością konfiguracji aplikacji na hostingu współdzielonym. Hostingi współdzielone zwykle są tańsze niż dedykowane. Wynika to ze współdzielenia jednego serwera przez wiele witryn. W takim przypadku użytkownicy hostingu nie mają dostępu do konfiguracji httpd.

Przekierowania 301

Do wykonania przekierowań służy moduł mod_rewrite. Aby z niego skorzystać, trzeba go najpierw włączyć. Służy do tego poniższa komenda, którą należy umieścić w  linii kodu przed wykonaniem pierwszego przekierowania:

RewriteEngine On

Pamiętać należy również o kolejności reguł. Zawsze są one wykonywane w kolejności, w jakiej znajdują się w pliku .htaccess.
Moduł mod_rewrite wykonuje przekierowania na podstawie wyrażeń regularnych i mapowania na podstawie pliku, bazy danych, a nawet zewnętrznego programu. Daje to możliwość łatwego i szybkiego tworzenia nawet bardzo złożonych konfiguracji.

Przekierowanie na wersję z HTTPS

Jeśli strona posiada certyfikat TLS (SSL), to warto ujednolicić protokół w witrynie i dokonać przekierowania z wersji nieszyfrowanej (http) na szyfrowaną (https). Służy do tego poniższy kod:

RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Jeżeli twój serwer znajduje się za loadbalancerem lub za proxy, to w zmiennej SERVER_PORT znajduje się port wykorzystany w komunikacji między serwerami, nie między użytkownikiem a proxy lub loadbalancerem.

W takim przypadku powyższy kod spowoduje pętlę przekierowań. Aby tego uniknąć należy wykonać przekierowania na podstawie nagłówka X-Forwarded-Proto.

RewriteCond %{HTTP:X-Forwarded-Proto} ^http$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Przekierowanie domeny na wersję z www lub bez www

Serwisy internetowe zwykle dostępne są zarówno w wersji z www i bez niej np. www.example.com example.com. Wyświetlanie strony w obu wersjach nie jest jednak optymalne dla pozycjonowania, dlatego powinieneś przekierować strony do jednej z wersji, np.:

RewriteCond %{HTTP_HOST} ^www\.example.com $ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Jeśli do strony podpięte jest wiele domen ito możliwe jest ich przekierowanie do jednej wersji przy użyciu jednej tylko reguły:

RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Przekierowania stron i katalogów

Przekierowanie pojedynczej strony możesz wykonać za pomocą jednej reguły:

RewriteRule ^stary-url\.html$ https://example.com/nowy-url.html [R=301,L]

W podobny sposób wykonuje się przekierowanie katalogu:

RewriteRule ^stary-katalog/(.*)$ https://example.com/nowy-katalog/$1 [R=301,L]

Wzorzec dopasowania jest wyrażeniem regularnym. Niektóre znaki, np. kropka, wymagają poprzedzającego znaku \, aby nie były interpretowane w specjalny sposób.

Wzorzec dopasowania w pliku htaccess jest interpretowany w kontekście bieżącego katalogu. Katalogi nadrzędne są pomijane.

Przyjazne linki

Czasami linki w serwisie są tworzone z użyciem ciągu zapytania. Zamiast przyjaznej struktury katalogów lub nazw przybierają formę długiego, trudnego do zrozumienia ciągu np.:

https://example.com/index.php?type=product&id=686&action=show&attr=20224

Jeden wpis w pliku .htaccess sprawi, że linki tego typu będą wyglądały dużo lepiej:

RewriteRule ^product/([0-9]+)/([0-9]+)/$ index.php?type=product&id=$1&action=show&attr=$2 [L]

Teraz możliwe jest używanie linków w znacznie wygodniejszej, krótszej formie:

https://domain.example/product/686/20224/

Blokowanie adresów IP

Zdarza się, że nadzwyczajnie dużą ilość zapytań do strony pochodzi z jednego adresu IP. Nie są to jednak użytkownicy strony, a najczęściej boty, które skanują serwis i niepotrzebnie obciążają witrynę.

Plik .htaccess na dodanie dyrektyw blokujących dostęp do strony użytkownikom z określonych adresów IP.

Najpierw należy określić kolejność rozpatrywania dostępu regułą Order. 
Możliwe są dwie opcje: allow,deny lub deny,allow.

Jeśli zablokowane mają zostać tylko wybrane adresy IP, należy wybrać opcję deny,allow.

Następnie należy określić adresy IP, które mają być blokowane regułą deny.

Order deny,allow
Deny from 10.10.0.5
Deny from 192.168.0.10

Możliwe jest także określenie zakresów adresów IP, które będą blokowane. W tym celu należy podać w regule deny fragment adresu IP (1-3 bajtów) lub adres sieci i maskę. Trzy poniższe reguły będą miały taki sam efekt - zablokowane zostaną adresy od 10.10.110.0 do 10.10.110.255.

Deny from 10.10.110
Deny from 10.10.110.0/255.255.255.0
Deny from 10.10.110.0/24

Własne strony błędów

Błędy się zdarzają. Nie musi być to wina samej strony, ale np. błędne zapytanie użytkownika. Serwery w takiej sytuacji pokazują numer i nazwę błędu, ale to niewiele pomaga użytkownikom.

Jeśli strona nie obsługuje błędów w przyjazny sposób tzn. nie wyświetla przyjaznych stron błędów, to możliwe jest ich przypisanie poprzez plik .htaccess. Przyjazne strony błędów zostaną uruchomione w przypadku wystąpienia takich zdarzeń (jeśli zostały wcześniej utworzone). Do uruchamiania własnej strony błędu służy reguła ErrorDocument np.:

ErrorDocument 404 /errors/404_not_found.html
ErrorDocument 500 /errors/500_server_error.html

 

Ocena artykułu:

1 2 3 4 5

5 / 5 według 5 opinii

Ta strona korzysta z ciasteczek aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie.