Dzisiaj znów powrócimy do przykładów użycia plików .htaccess, omawiając kolejne dobrodziejstwa które ze sobą niesie. Jak już opisywałem w poprzednim artykule: 4 praktyczne rzeczy, które możesz zrobić z .htaccess, narzędzie to może być bardzo przydatne w rękach sprawnego web developera. Poznaliśmy już sposoby zapobiegania hotlinkowania, blokowania użytkownika o zadanym numerze IP, własnej obsługi błędów oraz przekierowania podczas wprowadzania poprawek w serwisie. Teraz czas na więcej…
W niniejszym artykule, przedstawię kolejnych 10 przykładów wykorzystanie plików .htaccess. Dodatkowo radzę przed wdrażaniem/testowaniem poniższych fragmentów kodu, zrobić sobie kopię zapasową pliku. (tak na wszelki wypadek)
1. Blokowanie żądań wybranych klientów użytkownika (User Agents)
Z wykorzystaniem pliku .htaccess możliwe jest blokowanie żądań od wybranych klientów użytkownika, które z jakiegoś względu stanowią zagrożenie dla naszego serwisu. Jednym z ciekawszych rozwiązań jest uniemożliwienie automatycznego ściągania elementów serwisu przez tychże klientów.
#Blokowanie botów SetEnvIfNoCase user-Agent ^eCatch [NC,OR] SetEnvIfNoCase user-Agent ^EirGrabber [NC,OR] SetEnvIfNoCase user-Agent ^EmailSiphon [NC,OR] SetEnvIfNoCase user-Agent ^ExtractorPro [NC,OR] SetEnvIfNoCase user-Agent ^FlashGet [NC,OR] SetEnvIfNoCase user-Agent ^GetRight [NC,OR] SetEnvIfNoCase user-Agent ^Widow [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC] Order Allow,Deny Allow from all Deny from env=bad_bot
Nazwy User Agents można dodawać dowolnie, choć trudno jest zabezpieczyć się przed wszystkimi (trzeba je najpierw znać), a dodatkowo klient użytkownika jest identyfikowany poprzez HTTP_USER_AGENT, przez co bardzo łatwo można taki nagłówek zmienić czy usunąć. Ale lepsza jakaś ochroną niż żadna.
2. Przyjazne dla SEO przekierowanie 301
Jeżeli zmieniłeś nazwę domeny lub z jakiego względu potrzebujesz przekierować istniejącą stronę (strony) na inne, a obawiasz się kary ze strony wyszukiwarki Google, to poniższy sposób przekierowania jest właśnie dla Ciebie.
Redirect 301 /strona.html http://www.nowa-domena.com/nowa-strona.html
3. Przekierowanie wszystkich poza wybrańcami
Czasami chcesz, by twoja witryna internetowa była dostępna jedynie dla konkretnych hostów o konkretnych numerach IP. Aby tego dokonać wystarczy zaledwie kilka linijek w pliku .htaccess.
ErrorDocument 403 http://www.twoja-strona.pl Order deny,allow Deny from all Allow from 123.12.12.123 Allow from 234.23.23.234
Tym sposobem wszyscy odwiedzający twoja stronę, nie posiadający podanych numerów IP, zostaną przekierowani z błędem 403 (Zasób zabroniony).
4. Wyłączenie żądania pobierania pliku
W klasycznym scenariuszu, kiedy użytkownik próbuje pobrać plik z naszej strony pokazuje mu się okno dialogowe z opcja otworzenia lub pobrania pliku. Aby zapobiec takiej sytuacji i bez dodatkowego okienka po prostu pobrać plik i zapisać do domyślnej lokacji wystarczy:
AddType application/octet-stream .pdf AddType application/octet-stream .zip AddType application/octet-stream .mov
5. Ustawianie strony domyślnej
Plik .htaccess pozwala na jeszcze jeden sprytny trik – mianowicie na zmianę domyślnie otwieranej strony.
#Zmiana domyślnej strony DirectoryIndex start.html
Dzięki tej jednej linijce, w momencie gdy użytkownik wejdzie na twoja-strona.pl, nie zobaczy treści w pliku index.html, a treść z pliku start.html.
6. Ochrona hasłem plików i folderów
Wykorzystując .htaccess możesz również w bardzo prosty sposób zabezpieczyć pliki, a nawet całe foldery hasłem.
#Ochrona hasłem pliku AuthType Basic AuthName "Prompt" AuthUserFile /home/path/.htpasswd Require valid-user # Ochrona hasłem folderu resides AuthType basic AuthName "Katalog ten jest chroniony haslem" AuthUserFile /home/path/.htpasswd AuthGroupFile /dev/null Require valid-user
Należy jednak pamiętać by utworzyć wcześniej plik niezbędny do autentykacji .htpasswd i w zmiennej AuthUserFile podać jego położenie na serwerze.
7. Ustawianie adresu email administratora strony
Prosty przykład wykorzystania pliku .htaccess do podmiany domyślnego adresu email administratora strona na inny, dowolny adres.
ServerSignature EMail SetEnv SERVER_ADMIN default@domain.com
8. Blokowanie dostępu do pliku .htaccess
Aby uniemożliwić wykorzystanie pliku .htaccess w niepożądany dla nas sposób, wystarczy dodać dodatkową warstwę bezpieczeństwa w samym pliku. Dzięki temu zabiegowi, użytkownik próbujący otrzymać dostęp do pliku dostanie błąd 403. Podobną operację można dokonać na dowolnym pliku znajdującym się na serwerze.
# zabezpieczenie pliku htaccessorder allow,deny deny from all
9. Wymuszenie cache
Poniżej został przedstawiony bardzo prosty przykład wymuszania cachowania wybranych elementów w serwisie. W tagu filesmatch można podać wyrażenie regularne opisujące pliki, na których zostanie wymuszone cachowanie. W podanym przykładzie wyrażenie regularne operuje na rozszerzeniach plików. Dodatkowo zmienna ExpiresDefault definiuje czas przez który pliki będą znajdowały się w cache – tutaj dzień.
FileETag MTime SizeExpiresActive on ExpiresDefault "access plus 86400 seconds"
10. Usuwanie www z adresu URL
Po raz kolejny .htaccess okazuje się naprawdę pomocnym narzędziem, tym razem w usuwaniu www z adresu. Jeżeli chcesz pozbyć się przedrostka www, wystarczy:
#usuwanie www z adresu URI
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
Przedstawione w artykule przykłady wykorzystania pliku .htaccess to zaledwie wierzchołek góry lodowej możliwości jakie za sobą niesie. Nie wykluczone, że w którymś z najbliższych artykułów będę kontynuował wątek htaccessa, podając inne przykłady jego wykorzystania i być może trochę głębiej wniknąć w mechanizmy którymi dysponuje.Tymczasem…
Zapisz się na RSS by dowiadywać się o nowościach w serwisie!


10 komentarze do “10 przykładów wykorzystania plików .htaccess”
Bardzo fajny artykuł, fajnie trafić na coś, co nie jest kolejną bezużyteczną listą
Napisz coś cURLu dla PHP
czekam na kontynuację tematu .htaccess. Dobra robota
dzięki
dopisałem sobie temat cURL-a do swoich todo-sów.
dzięki
niewątpliwie do tematu jeszcze powrócę.
[...] adresem http://blog.alchemycode.pl/2010/01/27/10-przykladow-wykorzystania-plikow-htaccess/ znalazłem praktyczny tutorial (a nawet nie tutorial, ale gotowiec) z kodem najczęściej [...]
Witam
Zgadzam się z Tobą napisane, bardzo dobry tekst. Myślę, że temat nie jest do końca wyczerpany. Czekam na więcej…
Witam,
Ciekawe zestawienie !
A jak będzie wyglądał kod aby użytkownikom z wybranym IP (np redaktorom) serwować inny adres w serwisie a reszcie – jeszcze inny adres?
e tam po co się tego wszystkiego uczyć: http://htaccess.lapti.pl
Myślę, że taki kod wyglądał by dla przykladu:
SetEnvIf REMOTE_ADDR 192.76.123.4 REDIR=”redir”
RewriteCond %{REDIR} redir
RewriteRule ^/$ /inna_strona.html