Pliki .htaccess są powszechnie używane w większości projektów webowych, z uwagi na ogrom możliwości, które w prosty sposób udostępniając web developerowi.
W artykule skupię się na 4 praktycznych trikach które przydają sie praktycznie w każdym realizowanym projekcie, bez względu na jego wielkość
Czego potrzebujesz?
Dla przypomnienia pliki htaccess są plikami konfiguracyjnymi, używanymi przez serwer Apache, co za tym idzie niezbędny będzie takowy serwer, dodatkowo musimy się również upewnić, że hosting w ramach którego będzie działać nasza aplikacja webowa, dopuszcza wykorzystywanie plików htaccess (z reguły tak).
Zapobieganie hotlinkowaniu
Hotlinkowanie (ang. hotlinking) jest pobieraniem na własną stronę zasobów znajdujących się na stronie innej, np. poprzez umieszczenie na własnej stronie zdjęcia lub filmu, zaciąganego bezpośrednio z innego serwisu internetowego. Ze zjawiskiem hotlinkowania wiąże się kilka problemów. Głównym problemem jednak jest utrata przepustowości, która tracimy poprzez zaciąganie naszych zasobów przez inne serwisy. Jedną z technik obronnych przed tzw. hotlinkami jest zastosowanie plików .htaccess
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
#lista domen które mogą linkować zasoby
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?blog.alchemycode.pl [NC]
#w przypadku hotlinku - nie pokazuj zdjęcia
RewriteRule \.(jpg|png|gif)$ - [NC,F,L]
Teraz postaram się wyjaśnić krok po kroku co właściwie się dzieje za pośrednictwem htaccesa
- W pierwszej kolejności włączany jest silnik rewrite w serwerze Apache, który umożliwia przekierowanie żądań uzytkowników.
- W następnej kolejności zostają ustawiane warunki wykorzystania silnika, wykorzystując do tego celu procedurę RewriteCond. Procedura ta przyjmuje dwa argumenty:
- CondPattern – jest wzorem warunku, kiedy procedura ma zostać odpalona – do jej napisania wykorzystuje się wyrażenia regilarne, gdzie argumentem jest TestString
- TestString – jest to string, który ma zostać sprawdzony przez CondPattern. W przykładzie wykorzystana została zmienna ${HTTP_REFERER}, dostarczona przez serwer Apache, w której znajduje się nazwa domy, z której wywołano żądanie.
- W następnym kroku ustawiane są domeny, z którym możliwe będzie hotlinkowanie naszych zasobów. Flaga [NC] wykorzystywana jest do poinformowania silnika by ignorował wielkie znaki. W tym miejscu można powielić linijkę, dodając pożądaną liczbę domen, której udostępniane jest hotlinkowanie zasobów.
- Ostatnia linia kodu, to miejsce gdzie działa magia. Jeżeli powyższe warunki nie zostaną spełnione (czyt. żądanie nastąpi z domeny która nie została wcześniej dodana), a żądanie będzie dotyczyć plików .jpg, .png czy .gif, nastąpi przekierowanie, dając w efekcie pusta stronę. Właściwie taki efekt byłby uzyskany, gdyby nie zostały użyte flagi na końcu ostatniej linijki – NC: ignoruj wielkie znaki, F: wyślij error 403, L:poinformuj silnik by przestał interpretować plik, uniemożliwiając tym samym zastosowanie jakichkolwiek innych reguł.
W ten oto prosty sposób można ograniczyć dostęp do naszych plików. Oczywiście możemy okazać się trochę bardziej kreatywni i w momencie gdy, ktoś będzie próbował hotlinkować nasze zasoby, przekierowywać żądanie do innego źródła – na przykład obrazka
#alternatywny zasób RewriteRule \.(jpg|png|gif)$ http://blog.alchemycode.pl/images/anty_hotling.jpeg [NC,R,L]
Stosując ta regułę należy jednak pamiętać, by alternatywny obrazek nie miał rozszerzenia .jpg, .png czy .gif, ponieważ zostaną do niego zastosowane reguły tej samej reguły co spowoduje zapętlenie się przekierowania. Flaga R odpowiedzialna jest za wykonanie przekierowania.
Przykład działania takiego mechanizmu został zaprezentowany poniżej:

Blokowanie użytkownika po numerze IP
To rozwiązanie jest bardzo dobrą metodą na pozbycie się spamerów z Twojej strony. Jeżeli tylko jesteś w stanie wyśledzić adres IP osoby spamującej w komentarzach (czy gdziekolwiek indziej) na twojej stronie, tych kilka poniższych linijek kodu zablokuje mu dostęp do twojej strony.
Order Deny,Allow Deny from 11.111.111.11 # Deny from 0.0.0.0
Procedura jest naprawdę prosta – w pliku htaccess, używając dyrektywy z modułu mod_access, wskazanemu adresowi IP możemy udostępnić (allow) lub zabronić (deny) dostępu do strony.
Własna obsługa błędów
Wszystkie profesjonalne strony internetowe, które są już na hostingu produkcyjnych, powinny mieć własną obsługę błędów – wyświetlając tym samym osobno zaprojektowane strony typu 404, 403 czy 500. Obsługę taką w prosty sposób można zrealizować, używając dyrektywy ErrorDocument zawartej w corze serwera Apache. Cała procedura sprowadza się do kilku prostych linijek kodu w pliku .htaccess:
ErrorDocument 404 http://twoja-strona.pl/errors/404.html ErrorDocument 403 http://twoja-strona.pl/errors/403.html ErrorDocument 500 http://twoja-strona.pl/errors/500.html
Procedura ErrorDocument przyjmuje dwa argumenty: kod błędu, oraz dokument, który ma zostać wyświetlony w przypadku wystąpienia błędu. W powyższym przykładzie zaprezentowana została obsługa 3 rożnych błędów: 404 not found, 403 forbidden oraz 500 server error.
Innym ciekawym rozwiązaniem jest przekierowanie do skryptu PHP, logującego zdarzenie (przydatne w wykrywaniu potencjalnie niezauważalnych błędów)
Przekierowanie podczas wprowadzania poprawek
Bardzo przydatną funkcją, która można wykonać za pomocą htaccessa, jest podmiana treści serwisu, bądź jego części podczas wgrywania update-ów. Działanie takie uniemożliwia przeglądanie stron, które są modyfikowane, dzięki czemu niezachwiana jest integralność serwisu, a ponadto użytkownicy nie będą mieli dostępu do potencjalnych, tymczasowych luk bezpieczeństwa.
RewriteEngine on
RewriteCond %{REQUEST_URI} !/upgrade.html$
RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30
RewriteRule $ http://twoja-strona.pl/upgrade.html [R=302,L]
Do przeprowadzenia całej operacji, znów wykorzystamy silnik rewrite . Przedstawiony przykład będzie przekierowywał żądania do dokumentu upgrade.html, wszystkich za wyjątkiem żądań z zadanego adresu IP. Dodatkowo wykorzystana flaga informuje, że należy przeprowadzić przekierowanie na kod 302 – tymczasowo przeniesiony zasób
Zapisz się na RSS by dowiadywać się o nowościach w serwisie!



2 komentarze do “4 praktyczne rzeczy, które możesz zrobić z .htaccess”
Skąd jest ten samuraj, czy to własna robota?
niestety nie:) to robota twórców serwisu http://www.playr.pl