Ten blog nie jest już rozwijany. Wraz ze wszystkimi artykułami zostały przeniesiony pod adres wmroczkowski.pl

Czy chcesz przejść pod nowy adres?

sobota, 9 sierpnia 2008

Tajniki pliku .htaccess - budowa od podstaw

Dzisiaj opowiem trochę o pliku który tak bardzo ułatwia mi wszelkie prace związane z Apache'm - mowa tu o .htaccess. Oczywiście sam plik jest zwykłym plikiem tekstowym w którym zapisujemy ustawienia serwera Apache dlatego należy uważać na wszelkie edytory tekstowe, które zapisują pliki z rozszerzeniem .txt bo wtedy zwyczajnie nasz plik nie będzie działał. A więc krótko; jeżeli chcesz zabezpieczyć pewne strony lub pliki na swoim serwerze przed niepowołanymi użytkownikami, zmienić wyświetlany w URL adres, zablokować niepożądanych gości po adresie IP, wyświetlać tylko niektóre pliki z katalogu, tworzyć przekierowania, zdefiniować jakie typy rozszerzeń będą otwierane przez jakie programy, wybrać czy plik ma być otwierany czy zapisywany na dysku i wiele wiele innych rzeczy to zdecydowanie powinieneś zapoznać się z plikiem .htaccess!
Ja zacznę od podstaw. Warto wiedzieć jak budować taki plik, więc zacznijmy od najbardziej praktycznej rzeczy jaki istnieje w programowaniu - od komentarzy. Komentarze w .htaccess tworzy się podobnie jak w PHP, czyli poprzez dodanie znaku # na początku linii. Warto również pamiętać aby każde linie zamykać enterem.

Do dzieła! Na początek zadbałbym o odpowiednie uprawnienia dostępu do pliku. Optymalnie będą to ustawienia 644, które pozwolą na dostęp do pliku przez serwer ale uniemożliwią jego zmianę z poziomu przeglądarki - wpisujemy w shellu Chmod 644 .htaccess.
Pierwszym naszym wpisem będzie określenie domyślnego pliku strony WWW, do tego celu użyjemy DirectoryIndex. Tutaj możemy podać kilka nazw głównych plików, które oddzielamy spacjami np. DirectoryIndex index.php index.html index.htm glowna.php main.html. Tutaj ważna jest kolejność, jeżeli istnieje plik index.php to on będzie naszym domyślnym, jeżeli nie istnieje to następny w kolejności, czyli index.html. To jest bardzo przydatne w przypadku, gdy nasza strona ma trochę inną strukturę niż standardy, np. naszym startowym plikiem może być start.php, wtedy ten plik zostanie wczytany po wejściu na nasz serwer. Oczywiście jeżeli planujemy jakieś prace remontowe i nie chcemy żeby nasi goście oglądali ten bałagan dajemy DirectoryIndex roboty.html i wtedy nasi goście oglądają piękną informację na temat tego co się dzieje na stronie.

Teraz parę zdań na temat powiązań typów plików, czyli MimeType. Są to rozszerzenia, które zwracane są przeglądarce po znalezieniu na serwerze danego typu pliku. Chodzi tutaj o reakcję naszej przeglądarki na odczyt pliku z jakimś rozszerzeniem. Oczywiście większość rozszerzeń jest zdefiniowana domyślnie na naszym serwerze, czyli np. po kliknięciu w plik audio pojawia nam się monit odnośnie ściągnięcia pliku na dysk. Czasami jednak zdarza się, że chcemy aby konkretne rozszerzenia były otwierane trochę inaczej, np. jeśli chcemy niektóre pliki ściągać na dysk zamiast ich wyświetlać wpisujemy:
AddType application/octet-stream .pdf .gz

Możemy również wymusić otwieranie odpowiednich typów w plików w wybranych przez nasz programach - bardzo przydatne przy spakowanych plikach. Poniżej znajduję się listing przypisanie większości znanych formatów do aplikacji źródło: Internet Maker:
1. #css, html, xml, asp, flash i inne
2. AddType text/css .css
3. AddType application/xhtml+xml .xhtml
4. AddType text/html .shtml
5. AddType text/xml .xml
6. AddType text/html .asp
7. Addtype application/x-httpd-php .php
8. AddType application/x-shockwave-flash .swf
9. AddType application/x-director .dir .dcr .dxr .fgd
10. AddType application/x-authorware-map .aam
11. AddType application/x-authorware-seg .aas
12. AddType application/x-authorware-bin .aab
13. AddType image/x-freehand .fh4 .fh5 .fh7 .fhc .fh
14. AddType application/x-java-applet .class
15. # dokumenty
16. AddType application/pdf .pdf
17. AddType application/msword .doc
18. #multimedia
19. AddType audio/mpeg .mp3
20. AddType video/x-msvideo .avi
21. AddType audio/x-wav .wav
22. AddType video/quicktime .mov .qt
23. AddType video/x-ms-asf .asf .asx
24. AddType audio/x-ms-wma .wma
25. AddType audio/x-ms-wax .wax
26. AddType video/x-ms-wmv .wmv
27. AddType video/x-ms-wvx .wvx
28. AddType video/x-ms-wm .wm
29. AddType video/x-ms-wmx .wmx
30. AddType application/x-ms-wmz .wmz
31. AddType application/x-ms-wmd .wmd
32. #skompresowane
33. AddType application/zip .zip
34. AddType application/x-gzip .gz
35. AddType application/x-gtar .gtar
36. AddType application/x-rar-compressed .rar
37. AddType application/octet-stream .dmg
38. AddType application/x-7z-compressed .7z
39. #graficzne
40. Addtype image/jpg .jpg
41. Addtype image/gif .gif
42. #pozostałe
43. AddType application/x-bittorrent .torrent
44. AddType application/vnd.rn-realmedia .rm
45. AddType audio/vnd.rn-realaudio .ra .ram
46. AddType video/vnd.rn-realvideo .rv

A teraz bardzo przydatna informacja dla osób, które mają problemy z kodowaniem tekstu na stronach. Dzięki odpowiednim wpisom w .htaccess możemy ustawić kodowanie dokumentów, np.:
AddDefaultCharset ISO-8859-1
AddDefaultCharset ISO-8859-2


Za pomocą pliku .htaccess można bardzo łatwo i szybko wprowadzić autoryzację użytkowników dla danego katalogu. Do tego celu będziemy musieli utworzyć plik .htpasswd w którym będą wpisywani użytkownicy oraz ich zakodowane hasła. Na stronie tools.dynamicdrive znajdziemy edytor pliku .htpasswd - wystarczy wypisać użytkowników oraz ich hasła, a skrypt wygeneruje nam odpowiedni kod do wklejenia do naszego pliku. Standardowo wpis w .htpasswd wygląda tak:
uzytkownik:/YKTtGojL9BVA
Skrypt ze strony dynamicdrive wygeneruje wam również kod do wklejenia do pliku .htaccess, który będzie miał postać:
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/mysite/.htpasswd
AuthGroupFile /dev/null
require valid-user
W polu restricted area możemy wpisać co chcemy, np. "Ta strefa wymaga autoryzacji, zaloguj się" - to właśnie wyświetli się podczas próby wejścia na zabezpieczony teren. AuthUserFile musi kierować do naszego pliku z hasłami, natomiast require valid-user odpowiada za obszar jaki ma być zabezpieczony hasłem. Jeżeli zostawimy tak jak jest to wtedy cała strona będzie wymagała zalogowania, natomiast jeżeli chcemy zabezpieczyć hasłem tylko jeden plik, np.:dane_osobowe.html to dodajemy odpowiednie tagi:
<files html="dane_osobowe.html">
require valid-user
</files>
Zabezpieczanie w ten sposób strony dotyczy tylko połączeń HTTP. Jeżeli ktoś połączy się z serwerem przez FTP to takie uwierzytelnienie nie będzie działać.

W kolejnym poście opiszę strony błędów, które możemy tworzyć za pomocą pliku .htaccess.

1 komentarz:

Dagmara Fafińska pisze...

Świetnie napisane. Pozdrawiam serdecznie.