Spis treści
Czym jest plik .htaccess
Pierwotnym założeniem wykorzystania pliku .htaccess, co sugeruje jego nazwa było kontrolowanie dostępu do katalogów folderu, w którym się znajduje. Obecnie jest on wykorzystywany głównie w celu nadpisywania domyślnie zawartych w konfiguracji serwera, na przykład ustawień PHP parametrów oraz wskazania wykorzystania przez skrypty strony WWW reguł, których celem będzie przykładowo przepisywanie linków do postaci czytelnej i łatwej do zapamiętania.
Należy pamiętać, że plik .htaccess i wartości w nim zawarte działają zarówno dla plików w katalogu, w którym się znajduje, ale również analogicznie podlegają mu wszelkie pliki znajdujące się w kolejnych katalogach w strukturze. Dzieje się to do momentu aż w danym katalogu znajdującym się niżej w strukturze znajdzie się kolejny plik .htaccess i odwoła / zmieni reguły ustalone w tym obecnym wyżej.
./
├── twoje-pliki/
├── domena.pl/
│ ├── awstats/
│ ├── public_html/
│ ├── .htaccess (obejmuje foldery i katalogi w public_html)
│ ├── obrazy/
│ ├── style/
│ └── pliki/
│ ├── .htaccess (nadpisuje reguły z pliku zamieszczonego w public_html)
│ ├── katalog1/
│ └── katalog2/
Dlaczego kropka na początku nazwy pliku?
W systemach linuxowych, a na takich opiera się większość serwerów działających w internecie, kropka na początku pliku lub katalogu oznacza, że ma to być element ukryty. Dlatego też bardzo często podczas połączenia się za pośrednictwem FTP z serwerem plik .htaccess nie jest widoczny. Należy wtedy upewnić się, że w ustawieniach widoku listy plików oraz katalogów w aplikacji klienta FTP (np. FileZilla – informacje jak skonfigurować aplikację znajdziesz TUTAJ) mamy aktywną opcję pokazywania elementów ukrytych.
Do czego najczęściej używamy pliku .htaccess
Plik .htaccess jak wspomnieliśmy na początku służy głównie zmianie parametrów konfiguracji serwera oraz ustalaniu reguł przepisywania linków, tak więc możesz go wykorzystać m.in. w poniższych sytuacjach:
Własne strony błędów
W przypadku, gdy serwer WWW z różnych przyczyn nie może zrealizować żądania użytkownika, to zamiast docelowej strony generowana jest informacja o błędzie.
Listę zgłaszanych przez nasz system błędów wraz z ich opisami znajdą Państwo pod pozycją Błędy HTTP.
Przy pomocy pliku .htaccess możemy zdefiniować własne, niezależne od systemowych, strony objaśniające zaistniałą sytuację.
W tym celu wewnątrz katalogu public_html naszej strony tworzymy folder o nazwie /strony-bledow/.
W nim umieszczamy pliki z własną zawartością wyświetlaną w przypadku wygenerowania błędu, zapisując je jako
<kod_bledu.php>
np.
403.php
dla komunikatu Brak dostępu.
Tworzymy także wewnątrz katalogu z naszymi stronami błędów plik .htaccess o następującej treści:
Allow from all
Satisfy Any
Kolejnym krokiem będzie utworzenie pliku .htaccess wewnątrz katalogu public_html z następującą składnią dla każdego z błędów:
ErrorDocument <kod_bledu> /strony-bledow/<kod_bledu>.php
np.
ErrorDocument 401 /strony-bledow/401.php
ErrorDocument 403 /strony-bledow/403.php
ErrorDocument 404 /strony-bledow/404.php
Teraz po wygenerowaniu przez serwer wyjątku wyświetli się przygotowana przez nas strona.
Strona startowa serwisu
Pełny adres URL składa się z nazwy domeny (1), nazwy poszczególnych folderów (2) i nazwy pliku docelowego (3), np.
www.dhosting.pl/pliki/test.zip
(1) (2) (3)
Jednakże przy braku zdefiniowanej ostatniej części, serwer WWW przeszukuje podany katalog próbując znaleźć domyślnie wyświetlany w takiej sytuacji plik.
Na naszych serwerach automatycznie są ustawione jako takie nazwy następujące wartości:
index.htm index.html index.cgi index.pl index.php index.php5 index.xhtml
Aby ustawić własną listę bądź kolejność plików jako stron startowych należy do pliku .htaccess dodać następującą dyrektywę:
DirectoryIndex <nazwy plików oddzielone pojedynczą spacją>
Np.
DirectoryIndex index.html index.htm web.php index.php
Wyświetlanie listy plików
Domyślnie listowanie plików jest zablokowane. W przypadku gdy chcesz aby po wywołaniu katalogu gdzie nie znajduje się plik index.html lub index.php, była wyświetlana lista plików z całą zawartość aktualnego katalogu, możesz w pliku .htaccess dopisać następującą linijkę:
Options +Indexes
Zmiana adresu stron
Czasami następuje konieczność zmiany adresu jakiejś części serwisu.
Przykładowo, strona działu handlowego przeniesie się z domeny www.firma.dhosting.pl/handlowy/ na www.handlowy.firma.dhosting.pl
W takiej sytuacji Internauci używający starego adresu powinni zostać przekierowani na nowy.
Aby to uczynić, należy utworzyć plik .htaccess w folderze ze starą zawartością z następującą treścią:
Redirect <adres względny starej strony> <adres nowej strony>
np.
Redirect /handlowy/ http://www.handlowy.firma.dhosting.pl
Dodatkowy odrębny przewodnik w tej kwestii znajdziesz TUTAJ
Blokowanie hotlinkowania zasobów
Otwartość sieci Internet umożliwia także działania nieuczciwe, również w zakresie tworzenia stron www. Ile to razy zdarzało się, że Państwa fotografia została ukradziona i wykorzystana bez pozwolenia. Na dodatek zdjęcie nie zostało nawet skopiowane, tylko jest pobierane z Państwa serwisu.
Aby zapobiec takim sytuacjom, można w prosty sposób zablokować możliwość hotlinkowania – bo tak nazywa się wykorzystywanie zasobów z innych serwerów bez pozwolenia. Należy utworzyć plik .htaccess (lub użyć istniejącego) i zamieścić w nim taką regułkę:
RewriteEngine On #ten wiersz powinien wystąpić tylko raz, jeżeli już jest - można go pominąć
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.+.)?firma.pl [NC]
RewriteRule ^obrazy/.*.(jpe?g|gif|bmp|png)$ - [NC,F]
Taka regułka nie pozwoli wyświetlić na stronie innej niż firma.pl plików graficznych z katalogu /obrazy/. Można dodać także określone “zaprzyjaźnione” strony, którym zezwoliliśmy na korzystanie z naszych zasobów. Należy powielić 3 wiersz, i wpisać tam odpowiednią domenę “zaprzyjaźnionej” strony. Jednocześnie skrypt ten pozwala wyświetlać obrazki, jeżeli ktoś wpisze jego adres bezpośrednio do przeglądarki.
Jeżeli jakiś obraz zostanie hotlinkowany, nasz serwer www zwróci błąd 403 – Brak dostępu i obrazek się nie wyświetli.
Zabezpieczenie katalogu hasłem
Możesz w ten sposób zabezpieczyć katalog przed dostępem osób niepowołanych określając listę użytkowników, którzy korzystając z loginu oraz hasła taki dostęp uzyskają.
Przewodnik jak to wykonać znajdziesz TUTAJ