plik


ÿþApache przewodnik encyklopedyczny Apache przewodnik encyklopedyczny Autorzy: Ben Laurie, Peter Laurie T³umaczenie: Tomasz M. Sadowski ISBN: 83-7197-181-8 Format: B5, 408 stron Zawiera CD-ROM Przesy³ka gratis! Odbiorca pokrywa jedynie koszty pobrania (2,70 z³) w przypadku przesy³ki za zaliczeniem pocztowym Wydawnictwo Helion ul. Chopina 6, 44-100 Gliwice, POLAND telefon: (32) 230-98-63, 231-22-19 fax: (32) 230-98-63 w.10 mail: helion@helion.com.pl Ksi¹¿ka ta stanowi kompendium wiedzy o najpopularniejszym serwerze WWW na Swiecie. Przedstawione w niej przyk³ady umo¿liwi¹ Swie¿o upieczonym administratorom serwerów WWW b³yskawiczne nabranie wprawy w zarz¹dzaniu serwerem. DoSwiadczeni administratorzy i programiSci tworz¹cy skrypty CGI znajd¹ tu wiele cennych, szczegó³owych informacji natury encyklopedycznej, zaS dla programistów systemowych przeznaczone s¹ rozdzia³y o interfejsie programowym i tworzeniu modu³ów.............................................................................. Zobacz przyk³adowy rozdzia³ Spis treSci Je¿eli znasz tê ksi¹¿kê oceñ j¹ Aktualny cennik ksi¹¿ek e-mailem Ksi¹¿ki i "3D" Online Informacje o nowoSciach e-mailem Zamów najnowszy katalog © Helion 2000 8 Przeadresowywanie MaBo co w |yciu znajduje si na wBa[ciwym miejscu we wBa[ciwym czasie. Ten smutny wniosek dotyczy nie tylko serwerów WWW, ale i wszelkich innych rzeczy, które nas ota- czaj. Aby poradzi sobie z tym problemem, administrator ma do dyspozycji dyrektywy i , pozwalajce kierowa nadchodzce |dania na inne tory, bdz to w obrbie systemu plików serwera, bdz w inne miejsca sieci. Co prawda w idealnych warunkach nie powinno to by konieczne, jednak w praktyce mo|liwo[ przenoszenia dokumentów do innych katalogów  a nawet na inne serwery  bez konieczno[ci poprawiania caBej struktury Bcz jest czsto bardzo po|dana1. Bardziej uzasadnionym praktycznie zastosowaniem, przynajmniej je[li idzie o dyrektyw , jest organizowanie struktury katalogów, rozrzuconych nieraz po caBym systemie. Katalogi takie mog by zarzdzane przez ró|nych u|ytkowników, a w skrajnych przypadkach mog nawet znajdowa si w systemach plików montowanych jako zdalne (sieciowe). W takiej sytuacji dyrektywa pozwala zaprowadzi w ich strukturze pewien porzdek. Dyrektywa umo|liwia uruchamianie skryptów CGI, bez których niewiele witryn byBoby w stanie funkcjonowa. Alternatyw, udostpniajc wszystkie mo|liwo[ci dyrektywy i sporo wicej, jest nowa dyrektywa , któr omówimy w dalszej cz[ci rozdziaBu. U|ycie tej ostatniej wymaga niestety wBo|enia pewnego wysiBku w zaprogramowanie kilku rzeczy. Dyrektywa jest stosunkowo prosta w u|yciu, ale z drugiej strony stanowi przykBad  moduBowej-ale-nie-do-koDca struktury serwera Apache. Chocia| jest zdefiniowana w module mod_alias.c, implementujcy j kod odwoBuje si do instrukcji zawartych w module mod_cgi.c (ewentualnie innego moduBu obsBugujcego interfejs CGI). Funkcje zawarte w module mod_alias zapewniaj jeden z mechanizmów obsBugujcych dziaBanie skryptów CGI, za[ sam moduB wBczany jest do kodu serwera automatycznie podczas kompilacji. Plik konfiguracji serwera zawarty w katalogu & site/alias ma nastpujc posta: 1 Pamitajmy, |e zbyt wiele takich manewrów potrafi skutecznie utrudni zarzdzanie witryn. 184 Apache  Przewodnik encyklopedyczny ScriptAlias Z dyrektyw mieli[my ju| do czynienia w rozdziale 4. Umo|liwia ona umieszczenie skryptów w katalogu poBo|onym z dala od w[cibskich oczu i palców, a po- nadto automatycznie oznacza ten|e katalog jako zawierajcy skrypty CGI. ScriptAliasMatch Dyrektywa ta dziaBa podobnie jak , z t ró|nic, |e odebrany adres URL jest porównywany z wyra|eniem regularnym. W przypadku stwierdzenia zgodno[ci, frag- menty adresu odpowiadajce zawarto[ci nawiasów s podstawiane do nazwy katalogu, a uzyskany w ten sposób BaDcuch traktowany jest jak nazwa pliku. Aby np. skierowa od- woBanie do standardowego katalogu /cgi-bin, mo|emy zapisa: Alias Dyrektywa pozwala na przechowywanie dokumentów w miejscu innym, ni| gBówny katalog dokumentów okre[lony dyrektyw . W ramach przykBadu mo|emy utworzy katalog o nazwie /usr/www/somewhere_else i umie[ci w nim plik lost.txt, zawierajcy prosty komunikat: Teraz nale|y podda edycji plik httpd.conf, uzyskujc w efekcie co[ takiego: Po uruchomieniu serwera poleceniem , odwoBanie do adresu http://www.butterthlies.com.pl/ gdzieindziej powinno da nastpujcy wynik: RozdziaB 8: Przeadresowywanie 185 x x Kliknicie Bcza spowoduje powrót do gBównego katalogu doku- mentów ( ) witryny, czyli /usr/www/site.alias/htdocs/customers, a nie, jak mo|na byBoby przypuszcza, katalogu /usr/www. Dzieje si tak dlatego, i| Bcze oznacza nie katalog nadrzdny, lecz  nadrzdny adres URL , czyli w naszym przypadku http://www.butterthlies.com.pl. Nieco zaskakujcy (nawet dla tych, którzy ju| wiedz, ale akurat sobie zapomnieli) jest fakt, |e je[li w gBównym katalogu dokumentów witryny http://www.butterthlies.com.pl nie umie[cimy pliku index.html, automatycznie wygenerowany indeks nie bdzie zawieraB katalogu gdzie_indziej. Pamitaj równie|, aby przypadkiem nie u|y formy (pierwszy parametr zakoDczony jest uko[nikiem). Wynikiem takiego zapisu mog by nieco konfundujce komunikaty o nieznalezieniu dokumentu ( Not Found ). AliasMatch Dyrektywa ta jest analogiczna do . Jedyn ró|nic jest pierwszy parametr, dany nie konkretnym fragmentem nazwy, a wyra|eniem regularnym. UserDir DziaBanie dyrektywy omówimy na przykBadzie. ZaBó|my, |e klient |da dostpu do danych poBo|onych w katalogu macierzystym (ang. home directory) u|ytkownika pawel. U|yty w |daniu adres URL ma w takiej sytuacji posta http://www.butterthlies.com.pl/ ~pawel, co tBumaczy si jako  katalog macierzysty PawBa na serwerze identyfikowanym w systemie DNS jako www.butterthlies.com.pl . Dyrektywa pozwala zdefiniowa faktyczny podkatalog katalogu macierzystego u|ytkownika, u|ywany podczas obsBugi |dania dostpu do dokumentu podanego w formacie przedstawionym powy|ej. Parametr katalog mo|e zawiera: " nazw lub wzorzec nazwy katalogu, jak podano w przykBadach poni|ej; " sBowo kluczowe . Jego u|ycie blokuje odwzorowywanie nazw u|ytkowników na katalogi; nie dotyczy to u|ytkowników wyszczególnionych na li[cie ; " sBowo kluczowe i list nazw u|ytkowników rozdzielonych znakami spa- cji. Lista ta okre[la nazwy u|ytkowników, dla których odwzorowywanie nie bdzie wykonywane nawet w przypadku ich umieszczenia na li[cie ; 186 Apache  Przewodnik encyklopedyczny " sBowo kluczowe i list nazw u|ytkowników rozdzielonych znakami spacji. Lista ta okre[la nazwy u|ytkowników, dla których odwzorowywanie bdzie dokonywane mimo globalnego zakazu ustanowionego sBowem . Je|eli dyrektywa nie zawiera sBowa ani , jej parametr inter- pretowany jest jako wzorzec nazwy pliku u|ywany do tBumaczenia nazwy u|ytkownika na specyfikacj katalogu. Oto kilka przykBadów tBumaczenia adresu URL: http://www.firma.com/ ~pawel/raz/dwa.html: Z kolei poni|sze u|ycie poni|szych dyrektyw spowoduje przesBanie do klienta polecenia przeadresowania (redirect): U|ycie dyrektywy wymaga jednak rozwagi: przykBadowo, zapis spowoduje odwzorowanie na adres  / katalogu /~root, czego raczej nale|y unika. U|yt- kownikom serwera Apache w wersji 1.3 lub nowszej usilnie zaleca si umieszczenie w pliku konfiguracji serwera dyrektywy . WIN32 Wersja Apache przeznaczona dla Windows nie zna pojcia katalogu macierzystego u|yt- kownika, tote| odwzorowania kierujce odwoBanie do takiego katalogu (zobacz pierwszy przykBad) nie bd dziaBaBy poprawnie. Redirect Dyrektywa kieruje odwoBanie do adresu URL pod inny adres. RedirectMatch DziaBanie dyrektywy jest analogiczne do , jednak pierwszy parametr jest w tym przypadku dany wyra|eniem regularnym. Z niejak przykro[ci musimy stwierdzi, |e pracownicy dziaBu handlowego naszej firmy od pewnego czasu nadu|ywali swoich przywilejów i posiadanych zasobów. W zwizku z tym przeBo|eni postanowili da im nauczk, zabraniajc im dostpu do ró|nych sBodkich sekretów zapisanych w pliku sekrety i odsyBajc ich w zamian do publicznie dostpnej strony przeznaczonej dla klientów. Có| za upokorzenie! Ale zrobi to Batwo: wystarczy poprawi plik httpd.conf do nastpujcej postaci: RozdziaB 8: Przeadresowywanie 187 Dyrektywa mo|e by poBo|ona w dowolnym miejscu w obrbie odpowiednie- go bloku . Je[li teraz spróbujesz odwoBa si do adresu URL http:// sales.butterthlies.com.pl/sekrety, zostaniesz skierowany  objazdem na stron przezna- czon dla klientów  http://www.butterthlies.com.pl. Bardzo istotn ró|nic pomidzy dyrektywami i jest to, |e w przypad- ku przegldarka otrzymuje jawn informacj o nowym adresie, za[ w przypadku dyrektywy  nie. Adres przekazany klientowi w wyniku u|ycia dyrektywy jest traktowany jako adres bazowy dla wszystkich Bcz znajdujcych si w pobranym dokumencie. Translacja adresów URL W pierwszej cz[ci rozdziaBu zajli[my si moduBem mod_alias.c i jego przylegBo[ciami. Zestaw funkcji moduBu alias, a tak|e wiele innych mo|liwo[ci, implementuje inny moduB, mod_rewrite.c. Jest to zwarty zbiór procedur, bdcy sam w sobie niemal|e kompletnym programem2. DokBadna i obszerna dokumentacja moduBu dostpna jest pod adresem http://www.engelschall.com/pw/apache/rewriteguide/, do którego odsyBamy Czytelników powa|niej zainteresowanych wykorzystaniem jego mo|liwo[ci. Tutaj ograniczymy si jedynie do ogólnego omówienia mo|liwo[ci i funkcji moduBu. Dyrektywa porównuje adres URL z tzw. wzorcem translacji (ang. rewriting pattern). W przypadku stwierdzenia zgodno[ci wzorca i adresu, ten ostatni jest nastpnie tBumaczony (przepisywany) poprzez podstawienie translacyjne (ang. rewriting substitution). Wzorzec translacji dany jest zwykle prostym wyra|eniem regularnym, jak np. zapis , odpowiadajcy dowolnej nazwie moduBu. Teoria i praktyka u|ycia wyra|eD regularnych jest do[ obszerna, tote| zainteresowanych Czytelników odsyBamy do dokumentu & /src/regex/regex.7 (jest to strona podrcznika systemowego man, któr np. w systemie FreeBSD mo|na wy[wietli poleceniem x ). Wyra|enia regularne omówiono równie| w dokumentacji standardu POSIX, a tak|e w ksi|ce Jeffreya Friedla Mastering Regular Expressions (O Reilly & Associates). W ogromnym skrócie mo|na powiedzie, |e wyra|enia regularne pozwalaj na tworzenie wzorców, zbudowanych z okre[lonego zestawu znaków specjalnych i wykorzystywanych do porównywania z fragmentami przekazywanych przez klienta adresów URL. W podstawieniach mo|na wykorzystywa funkcje odwzorowujce, pobierajce fragmenty adresów i porównujce je z zawarto[ci baz danych, a nawet przeksztaBcajce je za pomoc innych programów. Proces tBumaczenia adresu mo|e by prowadzony iteracyjnie lub rekurencyjnie; wedBug dokumentacji mo|liwe jest tworzenie  ptli tBumaczcych, definiowanie kryteriów stopu, sekwencyjne u|ycie reguB, tworzenie konstrukcji pseudowarunkowych, wymuszanie przeadresowaD, typów MIME i przekazywania poprzez moduB serwera po[redniczcego . Zestaw funkcji oferowanych przez moduB mod_rewrite jest tak obszerny, i| jego opanowanie na drodze teoretycznej jest najprawdopodobniej niemo|liwe. Wydaje si wrcz, i| |aden z problemów zwizanych z omawianym przez nas tematem nie jest dla mod_rewrite nierozwizywalny, 2 Nie zmienia to faktu, |e proste zadania Batwiej jest realizowa w oparciu o dyrektyw i jej dodatki. 188 Apache  Przewodnik encyklopedyczny zakBadajc oczywi[cie, |e programista bdzie w stanie wBo|y w rozwizanie odpowiedni wysiBek intelektualny. Zastosowania moduBu mod_rewrite sprowadzaj si do czterech dziedzin. " U|ycia go przez administratora serwera w pliku httpd.conf w kontek[cie gBównym. Zdefiniowane tak reguBy maj zastosowanie do wszystkich adresów obsBugiwanych przez serwer, Bcznie z adresami znajdujcymi si w domenie serwerów wirtualnych. " U|ycia go przez administratora serwera w blokach . Zdefiniowane tak reguBy stosuj si tylko do adresów zwizanych z danym serwerem wirtualnym. " U|ycia go przez administratora w blokach . Tak zdefiniowane reguBy odnosz si wyBcznie do danego katalogu. " Stosowania go przez u|ytkowników w ich wBasnych plikach .htaccess. Zdefiniowane tak reguBy odnosz si wyBcznie do danego katalogu. Same dyrektywy nie s skomplikowane; omawiamy je poni|ej. RewriteEngine Dyrektywa wBcza ( ) i wyBcza ( ) mechanizm translacji adresów. U|ycie parametru caBkowicie blokuje translacj. Zamiast wyBcza poszczególne re- guBy poprzez wstawianie do wierszy znaków komentarza, lepiej jest wyB- czy translacj caBkowicie dyrektyw . RewriteLog Dyrektywa ta okre[la nazw pliku, w którym rejestrowane bd zdarzenia zwizane z translacj adresów URL. Nazwy nie rozpoczynajce si od znaku uko[nika ( / ) s trak- towane jako wzgldne w stosunku do gBównego katalogu serwera ( ). Dyrek- tywa ta powinna wystpowa w pliku konfiguracji serwera tylko raz. RewriteLogLevel Dyrektywa ta okre[la poziom szczegóBowo[ci danych rejestrowanych w pliku dziennika. Warto[ 0 oznacza brak rejestracji; warto[ 9 nakazuje rejestrowanie praktycznie wszyst- kich zdarzeD. Uwaga: u|ycie warto[ci powy|ej 2 powoduje zauwa|alne spowolnienie pracy serwera. RozdziaB 8: Przeadresowywanie 189 RewriteMap x Dyrektywa okre[la zewntrzny plik zawierajcy map podstawieD. AaDcu- chy u|ywane do podstawieD s ustalane poprzez odnalezienie w pliku zadanego klucza i odczytanie odpowiadajcej mu warto[ci. Format zapytania o warto[ klucza jest nast- pujcy: przy czym warto[-domy[lna jest ignorowana w przypadku nieznalezienia klucza. Typ pliku zawierajcego map podstawieD okre[lany jest drugim parametrem dyrektywy, który mo|e mie warto[: x Mapa podstawieD zapisana jest w postaci pliku tekstowego (ASCII). Plik taki mo|e zawiera puste wiersze, komentarze (wiersze zaczynajce si od znaku #) i oczywi[- cie wiersze danych w postaci Mapa podstawieD zapisywana jest w pliku DBM o strukturze rozproszonej (ang. DBM hashfile), czyli tzw.  nowym formacie binarnym DBM (NDBM; format ten li- czy sobie obecnie ju| ponad 15 lat i u|ywany jest te| do przechowywania danych u|ywanych przez moduB auth_dbm). Plik taki zawiera te same dane, co opisana po- przednio reprezentacja tekstowa. Do jego utworzenia mo|na wykorzysta które[ z dostpnych w systemie narzdzi do zarzdzania plikami ndbm, ewentualnie dostarczany w pakiecie Apache skrypt dbmmanage. W tym przypadku  mapa jest wywoBywanym przez serwer Apache programem (pli- kiem wykonywalnym lub skryptem CGI). Warto[ klucza przekazywana jest do stan- dardowego wej[cia programu jako BaDcuch zakoDczony znakiem nowego wiersza, na- tomiast warto[ podstawiana zwracana jest poprzez standardowe wyj[cie. W przypad- ku nieznalezienia klucza zwracany jest BaDcuch . Dokumentacja programu Apa- che zawiera trzy istotne uwagi dla programistów: " Program powinien by prosty, bowiem jego zaBamanie koDczy si zawiesze- niem caBego serwera Apache. " Operacje wyj[ciowe wykorzystujce standardowe wyj[cie nie mog by bu- forowane, gdy| prowadzi to do powstania impasu. Programy pisane w jzy- ku C powinny zawiera instrukcj za[ programy w Perlu " Wymiana danych z programem powinna by synchronizowana za pomoc pliku blokady (sBu|y do tego dyrektywa ). 190 Apache  Przewodnik encyklopedyczny Mapa podstawieD jest przechowywana w tzw. randomizowanym pliku tekstowym (ang. randomized plain text file). Format ten jest zbli|ony do zwykBego formatu teks- towego, wyposa|ony jest jednak w pewn dodatkow cech: odszukana warto[ klu- cza jest traktowana jako zestaw warto[ci alternatywnych rozdzielonych znakami kreski pionowej ( | ). Jako wynik wyszukiwania zwracana jest losowo wybrana warto[ z zestawu. Rozwizanie takie wyglda na pozór absurdalnie, jednak ma ono swoje zastosowanie  jest nim równowa|enie obci|enia w przypadku pracy Apache jako serwera odwrotnie po[redniczcego (ang. reverse proxy). W takiej sytuacji przeszukiwana baza zawiera nazwy serwerów, a ka|de |danie przesyBane do serwera po[redniczcego jest kierowane do losowo wybranego serwera znajdujcego si  za nim . Podstawienia realizowane s przez wewntrzn funkcj serwera Apache lub . Funkcje te dokonuj konwersji przekazanej warto[ci na wyBcznie WIELKIE lub wyBcznie maBe litery. RewriteBase Dyrektywa jawnie ustala bazowy adres URL u|ywany w translacji adresów wykonywanej dla indywidualnych katalogów. Co prawda ten sam efekt mo|na osign konstruujc odpowiedni zestaw reguB translacji, jednak czasami pro[ciej jest u|y rozwi- zania  zbiorczego . Adresy przekazywane do reguB translacji umieszczonych w pliku .htaccess pozbawione s fragmentu zawierajcego nazw katalogu lokalnego, tote| przetwarzanie dotyczy wyBcznie pozostaBej cz[ci adresu. Po zakoDczeniu przetwarzania, do wynikowego adresu doBczany jest prefiks ustalony za pomoc dyrektywy . PrzykBad zacytujemy za dokumentacj serwera Apache: x W wyniku wykonania powy|szych zapisów, |danie skierowane do adresu /xyz/oldstuff.html zostaje skierowane do fizycznego pliku /abc/def/newstuff.html.3 CaBy proces przebiega za[ nastpujco: 1. Serwer odbiera odwoBanie do adresu /xyz/oldstuff.html. 2. Adres zostaje wewntrznie poddany nastpujcym przeksztaBceniom: x x x 3. Wynikiem translacji jest adres /abc/def/newstuff.html. 3 Aby unikn nieporozumieD, warto jeszcze zacytowa inny fragment dokumentacji:  [& ] fizycznym katalogiem odpowiadajcym [cie|ce /xyz jest /abc/def; innymi sBowy, plik konfiguracji serwera zawiera dyrektyw x   przyp. tBum. RozdziaB 8: Przeadresowywanie 191 RewriteCond ReguBa translacji zdefiniowana dyrektyw mo|e by poprzedzona jedn lub kilkoma dyrektywami , okre[lajcymi warunki, które nale|y speBni aby translacja zostaBa wykonana. Parametr BaDcuch zawiera specyfikacje zmiennych ser- wera zapisane w postaci . Bie|ca warto[ zadanej w ten sposób zmiennej porównywana jest z wyra|eniem regularnym zapisanym w parametrze wzorzec; je[li porównanie wypadnie niepomy[lnie, translacja zadana dyrektyw nie jest wykonywana. mo|e przyjmowa jedn z poni|szych warto[ci: Zmienne te odpowiadaj okre[lonym polom nagBówka HTTP, zmiennym w kodzie zród- Bowym programu Apache i warto[ci bie|cego czasu. RewriteRule Dyrektywa definiuje pojedyncz reguB translacji i mo|e by u|yta dowoln liczb razy. Translacja wykonywana jest  potokowo , tj. kolejne reguBy stosowane s do przetworzenia wyników u|ycia poprzednich reguB (oznacza to, |e kolejno[ zapisu jest istotna). U|ycie danej warunkowane jest porównaniem adresu URL z wyra|eniem regularnym wzorzec; je[li porównanie wypadnie pozytywnie, dokonywane jest podstawienie. DziaBanie reguBy mo|e by zmodyfikowane za pomoc argumentu opcje, którego dopuszczalne warto[ci podajemy poni|ej (opcje mog by zapisywane równie| w formie skróconej). Wymusza przeadresowanie. 192 Apache  Przewodnik encyklopedyczny x Kieruje |danie do serwera po[redniczcego. Wymusza zakoDczenie przetwarzania (reguBa traktowana jest jako ostatnia w grupie). Je[li warunek danej reguBy jest speBniony, powoduje wykonanie nastpnej reguBy (lub reguB); w przeciwnym przypadku s one pomijane. Wymusza dany typ MIME dla pliku docelowego. Wymusza pominicie danej reguBy dla pod|daD generowanych wewntrznie przez serwer. 3 Definiuje zmienn [rodowiskow, nadajc jej okre[lon warto[. Nakazuje doBczenie BaDcucha zapytania do przetwarzanego adresu. Wymusza podstawienie nazwy pliku do pola identyfikatora URI w wewntrznej stru- kturze opisujcej |danie4 (umo|liwia to przetwarzanie przetBumaczonego adresu przez inne dyrektywy, np. ). Wymusza pominicie zadanej liczby reguB. x Wymusza ponowne rozpoczcie przetwarzania od pierwszej reguBy. Powoduje przesBanie odpowiedzi HTTP o kodzie 410 ( URL Gone  adres zostaB zlikwidowany). Powoduje przesBanie odpowiedzi HTTP o kodzie 403 ( URL Forbidden  brak zez- wolenia na dostp). Dla przykBadu zaBó|my, |e chcemy poddawa translacji adresy URL postaci do formy Zdefiniowan w ten sposób map podstawieD nale|y zapisa w pliku /gdziestam/ mapa.podstawien, a nastpnie dopisa do pliku konfiguracji serwera nastpujce wiersze: x + + 4 Opisujca |danie struktura jest omówiona w rozdziale 14  przyp. tBum. RozdziaB 8: Przeadresowywanie 193 PrzykBad zastosowania translacji adresów Pracownicy dziaBu handlowego firmy Butterthlies Polska solidnie przykBadaj si do pra- cy, a wachlarz oferowanych produktów rozrósB si do tego stopnia, |e stary katalog w po- staci pojedynczej strony w jzyku HTML jest ju| dla nich za ciasny. Informatycy firmy stworzyli zatem baz danych zawierajc informacje o pocztówkach, które mo|na pobie- ra za pomoc prostego programu cardinfo, wywoBywanego w sposób nastpujcy: gdzie numer to numer wzoru pocztówki, za[ parametr mo|e przyjmowa warto[  cena ,  autor lub  rozmiar . Niestety nasi handlowcy s zbyt zajci innymi sprawami, by zaw- raca sobie gBow zapamitywaniem skBadni, tote| postanowiono uBatwi im |ycie i umo- |liwi odwoBywanie si do bazy za pomoc odpowiednio sformuBowanych adresów URL. I tak odwoBanie do adresu http://sales.butterthlies.com.pl/info/2949/cena powinno zwró- ci cen kartki o numerze wzoru 2949. Odpowiedni plik konfiguracji serwera znajdziesz w katalogu site.rewrite: x x + + + Prawdziwy program cardinfo byBby zapewne caBkiem skomplikowanym narzdziem, jed- nak w naszym wiczeniu posBu|ymy si banalnie prost atrap: x 194 Apache  Przewodnik encyklopedyczny Aby nie pozostawia niczego przypadkowi, przed wypróbowaniem naszego systemu wy- Bczmy translacj dyrektyw . Próba odwoBania si do adresu http:// sales.butterthlies.com.pl/info/2949/cena powinna w takiej sytuacji zakoDczy si komuni- katem I nic dziwnego. WBczmy teraz translacj adresów dyrektyw i przyjrzyjmy si kluczowemu elementowi caBego mechanizmu, którym jest nastpujcy wiersz w pliku konfiguracji serwera: + + + W ludzkim jzyku znaczy to mniej wicej tyle: szukajc od pocztku BaDcucha, znajdz cig znaków , po którym nastpuje jeden lub wicej znaków ró|nych od  / i wstaw te znaki do zmiennej (operacj t realizuj nawiasy; dla pierwszego ich zesta- wu u|ywana jest zmienna ). Nastpnie wyszukaj znak  / , a po nim kolejny cig zna- ków ró|nych od  / i wstaw je do zmiennej . Wyszukaj koniec BaDcucha i przeka| wy- nik caBej operacji (co nakazuje opcja ) do nastpnej dyrektywy, któr jest . Finalny efekt caBej tej operacji powinien da odwoBanie do adresu http:// sales.butterthlies.com.pl/cgi-bin/cardinfo?<numer>+<parametr>. Gdyby skrypt z jakich[ powodów znajdowaB si na innym serwerze WWW, nasza reguBa miaBaby posta: + + + Zauwa|my przy tym, |e powy|szy wzorzec nie bdzie odpowiadaB BaDcuchowi /info/123/ cena/pawel, gdy| ten ostatni zawiera zbyt wiele znaków  / . Po uruchomieniu serwera poleceniem i odwoBaniu si za pomoc przegldarki do adresu http://sales.butterthlies.com.pl/info/2949/cena powinni[my uzyska odpowiedz: Korygowanie adresów Pakiet Apache zawiera jeszcze jeden u|yteczny moduB o nazwie mod_speling5. Umo|liwia on automatyczne poprawianie pisowni wielkich i maBych liter, uzupeBnianie opuszczo- nych znaków, zamian znaków bBdnie wpisanych i poprawianie przestawieD (tzw.  czes- kich bBdów ) w cz[ciach adresów URL odnoszcych si do plików i katalogów (odby- wa si to poprzez odnoszenie nazw do zawarto[ci systemu plików). ModuB mod_speling nie koryguje zle podanych nazw u|ytkowników. CheckSpelling 5 Tak, to nie pomyBka. Podejrzewamy, |e to jeszcze jeden przejaw humoru programistów (spelling (przez dwa  l ) = poprawianie bBdów pisowni  przyp. tBum.).

Wyszukiwarka

Podobne podstrony:
Apache przewodnik encyklopedyczny wydanie 3
ActionScript Przewodnik encyklopedyczny
Windows Server 08 PL Przewodnik encyklopedyczny ws28pe
802 Sieci?zprzewodowe Przewodnik encyklopedyczny sibepe
apache
systemy operacyjne cw linux apache mysql
apache
function apache setenv

więcej podobnych podstron