szkolenia z joomla, wordpress i drupal

Podstawy .htaccess, jak zaprząc serwer apache do pracy

18 czerwca 2010 | Instalacja,Serwer

Oprogramowanie serwera apache, czyli serwera obsługującego skrypty naszej strony www można dowolnie edytować pod warunkiem, iż jest się jego administratorem. Na szczęście pozwala on również zmieniać pomniejsze ustawienia dla każdego katalogu.
Aby tego dokonać, potrzebujemy pliku .htaccess. Mimo groźnie brzmiącej nazwy nie jest on nieprzyjazny dla użytkownika. Możemy go stworzyć w każdym edytorze tekstowym (również zwykłym notatniku!), a ewentualne błędy szybko skorygować. Obraz działania naszych zmian również będzie widoczny bezzwłocznie, jak tylko wgramy plik na serwer i przeładujemy stronę! .htaccess jest bowiem przetwarzany na samym początku przez mechanizm apache.

Własne komunikaty błędów

Najprostszą rzeczą, jaką możemy wykonać poprzez przekonfigurowanie .htaccess jest stworzenie własnych komunikatów bądź stron błędów witryny. Od tego momentu każdy błąd, jaki opiszemy będzie miał wybrany przez nas komunikat.
Dla przykładu zajmiemy się popularnym błędem 404, czyli nie znalezieniem wywoływanego pliku. Otwieramy notatnik i wpisujemy w nim coś takiego:
ErrorDocument 404 „Taki plik nie istnieje!”
Gwoli wyjaśnienia: początek, czyli ErrorDocument oznacza wywołanie funkcji serwera. Następne części tej linii odpowiadają za poszczególne opcje tej funkcji (ErrorDocument). 404 to kod błędu, jaki chcemy wywołać. Tekst w cudzysłowiu oznacza treść, jaka będzie się pokazywała przy wywołaniu tego błędu. Kolejne błędy wpisujemy w nowych liniach. Pod koniec całość zapisujemy jako plik .htaccess i umieszczamy w katalogu, który ma mieć wybrane przez nas ustawienia.
Druga opcja dla tej funkcji pozwala nam na wyświetlenie odpowiedniej strony w formacie .html. Składnia wygląda następująco:
ErrorDocument 403 /errors/blad403.html
I znów, ErrorDocument oznacza wywołanie funkcji, numer 403 kod błędu (tym razem brak dostępu do wybranego katalogu). Zmieniła się tylko końcówka zapisu, zamiast konkretnego tekstu podaliśmy adres strony, która zostanie wczytana w przypadku braku autoryzacji.
Poniżej przedstawiam listę błędów, które możemy opisać:
Zapytanie zakończone sukcesem
200     OK
201     Created
202     Accepted
203     Non-Authorative Information
204     No Content
205     Reset Content
206     Partial Content
Przekierowanie
300     Multiple Choices
301      Moved Permanently
302     Moved Temporarily
303     See Other
304     Not Modified
305     Use Proxy
Błędy zapytań klienta
400     Bad Request
401     Authorization Required
402     Payment Required (not used yet)
403     Forbidden
404     Not Found
405     Method Not Allowed
406     Not Acceptable (encoding)
407     Proxy Authentication Required
408     Request Timed Out
409     Conflicting Request
410     Gone
411     Content Length Required
412     Precondition Failed
413     Request Entity Too Long
414     Request URI Too Long
415     Unsupported Media Type
Server Errors
500     Internal Server Error
501     Not Implemented
502     Bad Gateway
503     Service Unavailable
504     Gateway Timeout
505     HTTP Version Not Supported

Przekierowania
Jeśli przenieśliśmy stronę do innego katalogu bądź zmienił się główny plik, który ma ją odpalać warto stworzyć automatyczne przekierowanie. Zaoszczędzi to naszym użytkownikom zbędnego klikania i pozwoli bezstresowo przerzucić ich pod nowy adres. Tym razem składnia wygląda w ten sposób:
Redirect http://nasza.strona.pl/poprzednikatalog/staryplik.html  http://nasza.strona.pl/nowykatalog/nowyplik.html
Komenda Redirect uruchamia funkcję, która ma przekierowywać. Jej parametry, które widać zaraz po niej to dwa odnośniki: pierwszy ( http://nasza.strona.pl/poprzednikatalog/staryplik.html) mówi o starym adresie, z którego przekierowujemy. Drugi (http://nasza.strona.pl/nowykatalog/nowyplik.html) pokazuje nam na jaki adres strona ma być przerzucona.

Strona główna serwisu
Po wpisaniu jakiegoś adresu, który odnosi się ogólnie do katalogu na serwerze apache wyświetli nam pliki index.html albo index.php. Czasami jednak musimy naszą witrynę odpalać poprzez inny plik nie mogąc jednocześnie edytować znanych wszystkich „indexów”. W takim wypadku znów z pomocą przychodzi nam .htaccess. Linia kodu, z której skorzystamy wygląda w ten sposób:

DirectoryIndex glowna.html start.php index.html index.php

Znów na początku mamy wywołanie funkcji, tym razem o nazwie DirectoryIndex. Następnie mamy nazwy plików, które mają być odpalane: jeśli na serwerze znajduje się plik glowna.html, zostanie od wyświetlony. Jeżeli nie, to następne pliki: start.php – index.html – index.php.

Hasło dla katalogu
Stworzenie katalogu zabezpieczonego hasłem nie wymaga od nas znajomości PHP, wystarczy posłużyć się prostym wpisem do .htaccess i (tym razem coś dodatkowego) .htpasswd
Na początek podam wpis dla .htaccess:
AuthName „Strona wymaga hasła!”
AuthType Basic
AuthUserFile /sciezka_do_katalogu/.htpasswd
Require valid-user

Tym razem nasz zapis składa się z aż 4 linijek, ale to nic! Nadal nie są skomplikowane. Pierwsza (AuthName) linijka zawiera komunikat, który wyświetli się przy próbie wejścia do chronionego katalogu. W cudzysłowiu podajemy jego treść. Druga (AuthType) zawiera rodzaj zabezpieczenia. Nas interesuje ten najbardziej podstawowy, więc wpisujemy wartość Basic. Trzecia linijka (AuthUserFile) pokazuje ścieżkę dostępu do pliku .htpasswd, w którym zawarte są informacje o loginach i hasłach. Ostatnia linijka (Require) mówi nam o tym, kogo ewentualnie można dopuścić do katalogu. W naszym wypadku wszystkich, którzy są zapisani w pliku .htpasswd. Można oczywiście ograniczyć to tylko dla wybranych użytkowników (Require user ania maciek jarek).
To tyle jeśli idzie o .htaccess, teraz musimy stworzyć drugi plik, czyli .htpasswd. Wykonujemy go tak samo, jak poprzedni (np. w notatniku). Tutaj zapisani są wszyscy użytkownicy oraz ich hasła. Konstrukcja jest banalna:
login:hasło
ania:yChT36AUss8XY
Kolejnych użytkowników dodajemy w nowych linijkach. Początku nie trzeba wyjaśniać, zawiera login. Po dwukropku mamy hasło, ale wygląda ono dość.. zagadkowo. Od razu dodam, iż hasłem dla użytkownika „ania” jest „mojehaslo”. Czemu wygląda ono tak dziwnie? Jest bowiem zakodowane poprzez szyfr md5. Zapobiegnie to odczytaniu hasła i zalogowaniu do katalogu nawet wtedy, gdy ktoś dotrze do naszego pliku .htpasswd. Wszystko pięknie, ale w jaki sposób mogę sobie samodzielnie stworzyć tego typu hasło? Wszystko dostępne jest przez sieć. Pod adresem: http://www.kxs.net/support/htaccess_pw.html znajdziemy skrypt, w którym wpisujemy login i hasło (wraz z powtórzeniem) a on następnie wyświetli poprawną linijkę dla .htpasswd!

Na zakończenie
Jak widać plik .htaccess daje nam ogromne możliwości. Tutaj podałem jedynie kilka przykładów, które można przetestować w międzyczasie, ale polecam każdemu, kto chce zarządzać swoim serwisem zapoznanie się z obsługą apache. Dlaczego? Jest to wspaniałe narzędzie! Bardziej skomplikowane funkcje pozwalają na inne, ciekawe zmiany. Można ustawić, by pliki z rozszerzeniem .html mogły wykonywać skrypty PHP, można stworzyć funkcje „mod_rewrite”, która generuje tzw. przyjazne linki (np. zamiast http://www.adres.pl/index.php?plik=xyz wystarczy wpisać http://www.adres.pl/index/xyz). Oczywiście, wszystko to wymaga czasu i przyswojenia konstrukcji oraz specyfikacji plików .htaccess!

Podstawy .htaccess, jak zaprząc serwer apache do pracy
Oprogramowanie serwera apache, czyli serwera obsługującego skrypty naszej strony www można dowolnie edytować pod warunkiem, iż jest się jego administratorem. Na szczęście pozwala on również zmieniać pomniejsze ustawienia dla każdego katalogu.
Aby tego dokonać, potrzebujemy pliku .htaccess. Mimo groźnie brzmiącej nazwy nie jest on nieprzyjazny dla użytkownika. Możemy go stworzyć w każdym edytorze tekstowym (również zwykłym notatniku!), a ewentualne błędy szybko skorygować. Obraz działania naszych zmian również będzie widoczny bezzwłocznie, jak tylko wgramy plik na serwer i przeładujemy stronę! .htaccess jest bowiem przetwarzany na samym początku przez mechanizm apache.

Własne komunikaty błędów
Najprostszą rzeczą, jaką możemy wykonać poprzez przekonfigurowanie .htaccess jest stworzenie własnych komunikatów bądź stron błędów witryny. Od tego momentu każdy błąd, jaki opiszemy będzie miał wybrany przez nas komunikat.
Dla przykładu zajmiemy się popularnym błędem 404, czyli nie znalezieniem wywoływanego pliku. Otwieramy notatnik i wpisujemy w nim coś takiego:
ErrorDocument 404 „Taki plik nie istnieje!”
Gwoli wyjaśnienia: początek, czyli ErrorDocument oznacza wywołanie funkcji serwera. Następne części tej linii odpowiadają za poszczególne opcje tej funkcji (ErrorDocument). 404 to kod błędu, jaki chcemy wywołać. Tekst w cudzysłowiu oznacza treść, jaka będzie się pokazywała przy wywołaniu tego błędu. Kolejne błędy wpisujemy w nowych liniach. Pod koniec całość zapisujemy jako plik .htaccess i umieszczamy w katalogu, który ma mieć wybrane przez nas ustawienia.
Druga opcja dla tej funkcji pozwala nam na wyświetlenie odpowiedniej strony w formacie .html. Składnia wygląda następująco:
ErrorDocument 403 /errors/blad403.html
I znów, ErrorDocument oznacza wywołanie funkcji, numer 403 kod błędu (tym razem brak dostępu do wybranego katalogu). Zmieniła się tylko końcówka zapisu, zamiast konkretnego tekstu podaliśmy adres strony, która zostanie wczytana w przypadku braku autoryzacji.
Poniżej przedstawiam listę błędów, które możemy opisać:
Zapytanie zakończone sukcesem
200     OK
201     Created
202     Accepted
203     Non-Authorative Information
204     No Content
205     Reset Content
206     Partial Content
Przekierowanie
300     Multiple Choices
301      Moved Permanently
302     Moved Temporarily
303     See Other
304     Not Modified
305     Use Proxy
Błędy zapytań klienta
400     Bad Request
401     Authorization Required
402     Payment Required (not used yet)
403     Forbidden
404     Not Found
405     Method Not Allowed
406     Not Acceptable (encoding)
407     Proxy Authentication Required
408     Request Timed Out
409     Conflicting Request
410     Gone
411     Content Length Required
412     Precondition Failed
413     Request Entity Too Long
414     Request URI Too Long
415     Unsupported Media Type
Server Errors
500     Internal Server Error
501     Not Implemented
502     Bad Gateway
503     Service Unavailable
504     Gateway Timeout
505     HTTP Version Not Supported
Przekierowania
Jeśli przenieśliśmy stronę do innego katalogu bądź zmienił się główny plik, który ma ją odpalać warto stworzyć automatyczne przekierowanie. Zaoszczędzi to naszym użytkownikom zbędnego klikania i pozwoli bezstresowo przerzucić ich pod nowy adres. Tym razem składnia wygląda w ten sposób:
Redirect http://nasza.strona.pl/poprzednikatalog/staryplik.html  http://nasza.strona.pl/nowykatalog/nowyplik.html
Komenda Redirect uruchamia funkcję, która ma przekierowywać. Jej parametry, które widać zaraz po niej to dwa odnośniki: pierwszy ( http://nasza.strona.pl/poprzednikatalog/staryplik.html) mówi o starym adresie, z którego przekierowujemy. Drugi (http://nasza.strona.pl/nowykatalog/nowyplik.html) pokazuje nam na jaki adres strona ma być przerzucona.

Strona główna serwisu
Po wpisaniu jakiegoś adresu, który odnosi się ogólnie do katalogu na serwerze apache wyświetli nam pliki index.html albo index.php. Czasami jednak musimy naszą witrynę odpalać poprzez inny plik nie mogąc jednocześnie edytować znanych wszystkich „indexów”. W takim wypadku znów z pomocą przychodzi nam .htaccess. Linia kodu, z której skorzystamy wygląda w ten sposób:

DirectoryIndex glowna.html start.php index.html index.php

Znów na początku mamy wywołanie funkcji, tym razem o nazwie DirectoryIndex. Następnie mamy nazwy plików, które mają być odpalane: jeśli na serwerze znajduje się plik glowna.html, zostanie od wyświetlony. Jeżeli nie, to następne pliki: start.php – index.html – index.php.

Hasło dla katalogu
Stworzenie katalogu zabezpieczonego hasłem nie wymaga od nas znajomości PHP, wystarczy posłużyć się prostym wpisem do .htaccess i (tym razem coś dodatkowego) .htpasswd
Na początek podam wpis dla .htaccess:
AuthName „Strona wymaga hasła!”
AuthType Basic
AuthUserFile /sciezka_do_katalogu/.htpasswd
Require valid-user
Tym razem nasz zapis składa się z aż 4 linijek, ale to nic! Nadal nie są skomplikowane. Pierwsza (AuthName) linijka zawiera komunikat, który wyświetli się przy próbie wejścia do chronionego katalogu. W cudzysłowiu podajemy jego treść. Druga (AuthType) zawiera rodzaj zabezpieczenia. Nas interesuje ten najbardziej podstawowy, więc wpisujemy wartość Basic. Trzecia linijka (AuthUserFile) pokazuje ścieżkę dostępu do pliku .htpasswd, w którym zawarte są informacje o loginach i hasłach. Ostatnia linijka (Require) mówi nam o tym, kogo ewentualnie można dopuścić do katalogu. W naszym wypadku wszystkich, którzy są zapisani w pliku .htpasswd. Można oczywiście ograniczyć to tylko dla wybranych użytkowników (Require user ania maciek jarek).
To tyle jeśli idzie o .htaccess, teraz musimy stworzyć drugi plik, czyli .htpasswd. Wykonujemy go tak samo, jak poprzedni (np. w notatniku). Tutaj zapisani są wszyscy użytkownicy oraz ich hasła. Konstrukcja jest banalna:
login:hasło
ania:yChT36AUss8XY
Kolejnych użytkowników dodajemy w nowych linijkach. Początku nie trzeba wyjaśniać, zawiera login. Po dwukropku mamy hasło, ale wygląda ono dość.. zagadkowo. Od razu dodam, iż hasłem dla użytkownika „ania” jest „mojehaslo”. Czemu wygląda ono tak dziwnie? Jest bowiem zakodowane poprzez szyfr md5. Zapobiegnie to odczytaniu hasła i zalogowaniu do katalogu nawet wtedy, gdy ktoś dotrze do naszego pliku .htpasswd. Wszystko pięknie, ale w jaki sposób mogę sobie samodzielnie stworzyć tego typu hasło? Wszystko dostępne jest przez sieć. Pod adresem: http://www.kxs.net/support/htaccess_pw.html znajdziemy skrypt, w którym wpisujemy login i hasło (wraz z powtórzeniem) a on następnie wyświetli poprawną linijkę dla .htpasswd!

Na zakończenie
Jak widać plik .htaccess daje nam ogromne możliwości. Tutaj podałem jedynie kilka przykładów, które można przetestować w międzyczasie, ale polecam każdemu, kto chce zarządzać swoim serwisem zapoznanie się z obsługą apache. Dlaczego? Jest to wspaniałe narzędzie! Bardziej skomplikowane funkcje pozwalają na inne, ciekawe zmiany. Można ustawić, by pliki z rozszerzeniem .html mogły wykonywać skrypty PHP, można stworzyć funkcje „mod_rewrite”, która generuje tzw. przyjazne linki (np. zamiast http://www.adres.pl/index.php?plik=xyz wystarczy wpisać http://www.adres.pl/index/xyz). Oczywiście, wszystko to wymaga czasu i przyswojenia konstrukcji oraz specyfikacji plików .htaccess!

Losowe artykuły


One Response to “Podstawy .htaccess, jak zaprząc serwer apache do pracy”

Leave a Reply