Jesteś tutaj: webmade.org >> porady >> pozostałe
autor: Sulucilus, ostatnia modyfikacja: 2007-02-21
Plik .htaccess pozwala na pewne zmiany w konfiguracji serwera. Zmiany te są widoczne tylko w podkatalogach i katalogu, w którym ten plik się znajduje.
Jeśli wstawimy do jakiegoś podkatalogu inny plik .htaccess następuje zmiana parametrów w tym katalogu i znów w podkatalogach tego podkatalogu :)
Pamiętaj, że każdą komendę konfiguracji definujemu po enterze (chr(13));
Ogólnie mówiąc dzięki plikom .htaccess możemy ustawić parametry dla kilku tysięcy stron jednocześnie zamiast ustawiać je pojedyńczo.
ErrorDocument 400 /400.php ErrorDocument 401 /401.php ErrorDocument 403 /403.php ErrorDocument 404 /404.php ErrorDocument 500 /500.php ErrorDocument 503 /503.php
Dzieki tym linijkom mozemy określić własne strony z informacją o danym błędzie. Oto mój przykładowy plik strony informującej o błędzie:
<?php // logi Function logs($msg) { global $HTTP_USER_AGENT, $_SERVER; $url = sprintf("%s%s%s","http://",$_SERVER['HTTP_HOST'],$_SERVER['REQUEST_URI']); $plik='http'; if($_SERVER['HTTPS']=='on') { $plik.='s'; } $plik.='://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']; if($_SERVER['QUERY_STRING']>' ') { $plik.='?'.$_SERVER['QUERY_STRING']; } if ($_SERVER["HTTP_X_FORWARDED_FOR"]) { if ($_SERVER["HTTP_CLIENT_IP"]) { $mz_user['proxy']=$_SERVER["HTTP_CLIENT_IP"]; }else { $mz_user['proxy']=$_SERVER["REMOTE_ADDR"]; } $mz_user['ip']=$_SERVER["HTTP_X_FORWARDED_FOR"]; }else { if ($_SERVER["HTTP_CLIENT_IP"]) { $mz_user['ip']=$_SERVER["HTTP_CLIENT_IP"]; }else { $mz_user['ip']=$_SERVER["REMOTE_ADDR"]; } } $h=@fopen('logs.txt','a'); // pamietaj aby ustawic chmod na 622 @fwrite($h,date('H:i:s d-m-Y').' ip: '.$mz_user['ip'].' proxy: '.$mz_user['proxy'].' plik: '.$plik.' url: '.$url.' '.$msg.' '); @fclose($h); return $msg; } // log logs('404 - Plik nie istnieje'); ?> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"/> <link rel="stylesheet" href="http://www.sulucilus.fol.pl/gfx/styl.css" type="text/css"/> <link rel="shortcut icon" href="http://www.sulucilus.fol.pl/gfx/ikona.ico"> <title>Sulucilus home page - Bł±d(ERROR) 404</title> </head> <body background="http://www.sulucilus.fol.pl/gfx/tlo.gif" leftmargin="0" topmargin="0"> <center><img src="http://www.sulucilus.fol.pl/gfx/404.jpg" width="561" height="439" border="0" alt="PODANA STRONA NIE ISTNIEJE - PAGE NOT EXIST"/><br/> <p><a href="http://www.sulucilus.fol.pl"><img src="http://www.sulucilus.fol.pl/gfx/404_1.jpg" width="298" height="37" border="0" alt="Kliknij aby dostać się na stronę główn± - Go to main page" title="Kliknij aby dostać się na stronę główn± - Go to main page"/></a></p></center> <script language="JavaScript" type="text/javascript"> document.write("<img src=\\"http://stat.4u.pl/cgi-bin/s.cgi?i=sulucilus&r="+top.document.referrer+"\\" width=1 height=1>") </script> <noscript> <img src="http://stat.4u.pl/cgi-bin/s.cgi?i=sulucilus&r=ns" width="1"> </noscript> </body> </html>
deny from all
blokowanie dostępu z zew. nikt nie wylistuje tego folderu i nie podejży w nim plików(oprócz użytkownika oraz twoich skryptów)
deny from 000.000.000.000
Blokowanie danego zakresu ip
deny from all allow from 000.000.000.000
Dostęp tylko z danego zakresu ip
Redirect /scizka http://www.innastrona.pl/stara
przekierowanie przy próbie dostępu do danego pliku(oczywiście z poziomu przeglądarki), jeśli ktoś będzie chciał odczytać np. http://www.strona.pl/sciezka/plik.php to automatycznie przekieruje go do http://www.innastrona.pl/stara/plik.php
AuthName \"Section Name\" AuthType Basic AuthUserFile /scizka/do/.htpasswd Require valid-user Ustawienie hasła dostępu dla danego folderu. Section Name zastępujemy naszym komunikatem, a /scizka/do/.htpasswd sciezka do pliku .htpasswd, w którym przechowywane są hasła. Hasła przechowuje się w formacie: <br><b><small>Kod:</small></b><p class="code"><code><font color="#000000"> login:haslo
Jeśli chcesz możesz dodać kilka userów (po prostu dodajesz kolejne linijki z "login:haslo". Pamiętaj, że hasło musi być zakodowane. Do tego celu użyj funkcji crypt z php http://pl.php.net/manual/pl/function.crypt.php.
<font color="#0000BB"><?php </font><font color="#007700">echo </font><font color="#0000BB">crypt</font><font color="#007700">(</font><font color="#DD0000">'haslo'</font><font color="#007700">,</font><font color="#0000BB">CRYPT_STD_DES</font><font color="#007700">); </font><font color="#0000BB">?></font>
AuthName "Section Name" Access allow all users marek jacek
Dostęp tylko dla użytkowników o loginach marek i jacek
AuthName "Section Name" Access allow all groups lolki
Dostęp tylko dla użytkowników należących do grupy lolki
AuthName "Section Name" Access allow 192.45.111.222
Dostęp tylko dla użytkowników mających ip: 192.45.111.222
AuthName "Section Name" Access allow 195.205
Dostęp dla dowolnego hosta, którego ip zaczyna się od 194.45
HeaderName /HEADER.HTML ReadmeName /README.HTML
Dzięki tym linijkom gdy nie będzie w danym folderze pliku index apache wylistuje katalogi z tym, że zaincluduje pliczki HEADER.HTML oraz README.HTML.
Czemu takie nazwy, te pliczki są ukrywane przy listowaniu, Czemu / przed nimi, gdy będzie bez / to bedzie includowal te pliczki tylko dla tego katalogu w którym jest pliczek .htaccess
To jest szczególnie przydatne gdy chcemy zrobić stronę opartą o listowanie folderów oraz chcemy wiedziec ile na niej przebywa osób (można śmiało do pliku README lub HEADER wsadzić jakieś statystyki)
Uwaga nie radze zmieniać rozmiarów i typów czcionek bo całe listowanie może się rozwalić ;/
AddType application/x-httpd-php .jpg
Określa typ dla danego rozszerzenia, w przykładzie wyżej, ustawione jest, iż w plikach .jpg zostanie wykonywany kod php
AddType text/html .shtml AddHandler server-parsed .shtml Options Indexes FollowSymLinks Includes
Czasem SSI jest domyślnie wyłączone, ten wpis to zmieni.
DirectoryIndex plik.html abc.def
Chciałbyś zmienić nazwę domyślnego pliku(np. index.php, index.html), który jest wyświetlany ? Nic trudnego wystarczy ten wpis. W nim decydujemy jaki plik ma być załadowany gdy nie jest podany konkretny plik. Pamiętaj, że kolejność ma znaczenie. Ponieważ jak nie będzie istniał jeden plik to serwer sprawdzi czy kolejny na liście istnieje, jeśli tak to go zaladuje.
:Location /*.muzyka SetMime audio/mpeg
Ustawienie wartości mime (jest to rozszerzenie, które pobiera przeglądarka, następnie decyduje jaki program je obsługuje i uruchamia go) dla danego rozszerzenia plików w danym katalogu (można określić dla konkretnego pliku)
<Files .htaccess> order allow,deny deny from all </Files>
Parametry dla danego pliku (jeśli wstawimy * to plików). W tym przypadku ustawiamy brak dostępu dla osób, które chciałyby podejrzeć nasze pliczki .htaccess. Jest to bardzo ważne ponieważ jak bronimy dostępu do jakiegoś pliku lub katalogu hasła mogą być przechowywane w takich pliczkach, a co za tym idzie podglądane przez przeglądarke (przy odpowiednich ustawieniach serwera), dlatego warto to zmienić.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\\.)?twoja-strona.pl/.*$ [NC] RewriteRule \\.(gif|jpg)$ - [F]
Czasem zdarza się, że statystyki na serwerze oraz na zew serwerze zupełnie się różnią. Warto by sprawdzić czy przypadkiem do naszych obrazków nie ma hotlinkowania, które sprawia, że trafik jest większy a statystyki kłamią. Te pare linijek wyżej rozwiążą nasz problem. Można też zamiast bronić użycia hotlinkowania poprostu przenieść użytkownika (przeglądarke) do innego obrazka.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\\.)?twoja-strona.pl/.*$ [NC] RewriteRule \\.(gif|jpg)$ http://www.twoja-strona.pl/hotlink.gif [R,L]
Czasem byśmy chcieli aby apache nie wylistował wszystkich plików. Ta linia odznaczy nam te, których nie chcemy. Przykład jest na plikach o rozszerzeniach jpg i gif
IndexIgnore *.gif *.jpg
Sulucilus, http://suli.goneo.net
szukaj: htaccess pliki htaccess
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org