Moduł mod_rewrite, nazywany często "scyzorykiem armii szwajcarskiej", to potężne narzędzie administratorów serwerów WWW, które uruchomiono w oparciu o Apache. Za jego pomocą można w dowolny niemal sposób manipulować adresami URL wpisywanymi przez użytkowników w przeglądarce internetowej. Mod_rewrite, oparty na dyrektywach i wyrażeniach regularnych, pozwala na zmianę postaci adresów URL w oparciu o zmienne środowiskowe, nagłówki HTTP i wiele innych warunków. Ogromne możliwości mod_rewrite sprawiają, że jest on określany jako "równie skomplikowany i tajemniczy jak magia woodoo".
Celem książki "mod_rewrite. Podręcznik administratora" jest przybliżenie możliwości tego modułu administratorom serwerów. Przedstawia ona zarówno zagadnienia podstawowe, czyli obszar zastosowań modułu oraz zasady wykorzystania wyrażeń regularnych, jak i zagadnienia zaawansowane, takie jak tworzenie serwerów wirtualnych, kontrola dostępu i użycie dyrektyw warunkowych. Czytając tę książkę, dowiesz się, kiedy należy stosować mod_rewrite, jak go instalować i konfigurować, jak pracować z mechanizmem przepisywania oraz w jaki sposób wyszukiwać i usuwać błędy w dyrektywach modułu.
Podstawowe wiadomości o mod_rewrite
Wyrażenia regularne
Procedura instalowania modułu mod_rewrite
Korzystanie z dyrektywy RewriteRule
Przepisywanie warunkowe
Zewnętrzny mechanizm odwzorowania adresów
Dynamiczne tworzenie serwerów wirtualnych
Współpraca modułu mod_rewrite z modułem mod_proxy
O autorze (9)
Wprowadzenie (11)
Rozdział 1. Wprowadzenie do modułu mod_rewrite (15)
Kiedy należy stosować moduł mod_rewrite (16)
Oczyszczenie ciągów URL (16)
Duża liczba serwerów wirtualnych (17)
Reorganizacja witryny (17)
Zmiany warunkowe (18)
Inne zastosowania (18)
Kiedy nie należy stosować modułu mod_rewrite (18)
Zwykłe przekierowanie (18)
Bardziej skomplikowane przekierowania (20)
Serwery wirtualne (20)
Inne rozwiązania (21)
Podsumowanie (21)
Rozdział 2. Wyrażenia regularne (23)
Podstawowe elementy składowe (23)
Dopasowanie dowolnego znaku (.) (25)
Znaki specjalne () (25)
Wyznaczenie początku i końca ciągu (^ i $) (26)
Dopasowanie jednego lub większej liczby znaków (+) (26)
Dopasowanie zera lub większej liczby znaków (*) (26)
Zachłanne dopasowywanie (27)
Dopasowanie opcjonalne (?) (27)
Grupowanie i przechwytywanie ( () ) (28)
Dopasowanie jednego znaku ze zbioru ([ ]) (29)
Negacja (!) (30)
Przykłady wyrażeń regularnych (30)
Adresy poczty elektronicznej (31)
Numer telefoniczny (32)
Dopasowanie ciągów URI (33)
Narzędzia wspomagające pracę z wyrażeniami regularnymi (35)
Aplikacja Regex Coach (36)
Podsumowanie (36)
Rozdział 3. Instalacja i konfiguracja modułu mod_rewrite (37)
Dystrybucje niezależnych firm (37)
Instalacja modułu mod_rewrite (38)
Obiekty statyczne i współdzielone (38)
Instalowanie z plików źródłowych - statyczne (39)
Instalacja z plików źródłowych - obiekty współdzielone (40)
Włączenie modułu mod_rewrite - instalacja pakietu binarnego (42)
Sprawdzenie, czy moduł mod_rewrite jest poprawnie zainstalowany (44)
Brak uprawnień administratora systemu (44)
Włączanie dziennika RewriteLog (46)
Podsumowanie (46)
Rozdział 4. Dyrektywa RewriteRule (47)
Podstawowe informacje o dyrektywie RewriteRule (47)
Składnia dyrektywy RewriteRule (48)
Kontekst użycia dyrektywy RewriteRule (48)
Docelowy adres przepisywania (51)
Opcje dyrektywy RewriteRule (53)
Podsumowanie (62)
Rozdział 5. Dyrektywa RewriteCond (63)
Składnia dyrektywy RewriteCond (63)
Zmienne dyrektywy RewriteCond (64)
Przekierowanie zależne od czasu (67)
Dodatkowe zmienne dyrektywy RewriteCond (68)
Kradzież plików graficznych (69)
Wzorzec dyrektywy RewriteCond (69)
Przykłady (70)
Modyfikatory dyrektywy RewriteCond (71)
Zapętlenie (72)
Podsumowanie (73)
Rozdział 6. Dyrektywa RewriteMap (75)
Składnia dyrektywy RewriteMap (75)
Typy map (76)
Pliki txt (76)
Losowe przepisywanie (78)
Mapy indeksowane (80)
Zewnętrzne programy (82)
Funkcje wewnętrzne (83)
Podsumowanie (84)
Rozdział 7. Przepisania podstawowe (85)
Dopasowanie odnośników URL (85)
Problem - chcemy przepisać ścieżkę z przekazywaniem informacji w łańcuchu zapytań (przykład 1.) (86)
Problem - chcemy przepisać ścieżkę z przekazywaniem informacji w łańcuchu zapytań (przykład 2.) (86)
Problem - chcemy przepisać ścieżkę z przekazywaniem informacji w łańcuchu zapytań (przykład 3.) (87)
Problem - mamy więcej niż dziewięć argumentów (88)
Zmiany nazw i reorganizacja (89)
Problem - przeszliśmy z Cold Fusion na PHP i nadal chcemy, aby wszystkie nasze odnośniki ciągle działały (89)
Problem - poszukujemy pliku w więcej niż jednym miejscu (90)
Problem - część zawartości naszej strony znajduje się na innym serwerze (91)
Problem - wymagamy kanonicznej nazwy hosta (91)
Problem - widzimy zły host SSL (92)
Problem - chcemy wymusić połączenie przez SSL (92)
Podsumowanie (93)
Rozdział 8. Przepisywanie warunkowe (95)
Zapętlenie (95)
Przepisywanie zależne od czasu (98)
Problem - strona konkursu dla użytkowników powinna być dostępna jedynie w czasie jego trwania (98)
Przepisywanie zależne od parametrów przeglądarki (99)
Problem - żądania użytkowników powinny być przekierowywane zależnie od rodzaju przeglądarki (99)
Problem - zewnętrzni użytkownicy powinni zostać odesłani do wybranej części witryny (100)
Problem - treść publikowana w serwisie powinna być uzależniona od nazwy użytkownika (101)
Problem - trzeba zmusić użytkowników do przejścia przez stronę startową (102)
Problem - trzeba uniemożliwić użytkownikom przesyłanie plików PHP i uruchamianie ich (103)
Problem - komunikat o błędzie weryfikacji certyfikatu klienckiego jest niejasny (103)
Podsumowanie (104)
Rozdział 9. Kontrola dostępu (105)
Kiedy nie należy wykorzystywać modułu mod_rewrite (105)
Kontrola dostępu na podstawie adresu (106)
Kontrola dostępu na podstawie wartości zmiennej środowiskowej (106)
Kontrola dostępu z wykorzystaniem modułu mod_rewrite (107)
Problem - Uniemożliwienie dostępu do określonego katalogu (108)
Problem - Zablokowanie dostępu do kilku katalogów za pomocą jednego bloku instrukcji (109)
Kontrola dostępu na podstawie parametrów jednostki klienckiej (110)
Problem - Zabezpieczenie serwisu przed działaniem programów-robotów (110)
Problem - Zabezpieczenie serwisu przed "kradzieżą plików graficznych" (112)
Podsumowanie (113)
Rozdział 10. Serwery wirtualne (115)
Tradycyjny sposób tworzenia serwerów wirtualnych (116)
Konfiguracja serwerów wirtualnych z wykorzystaniem modułu mod_vhost_alias (117)
Serwer www.przyklad.pl działa poprawnie, a przyklad.pl nie (118)
Zostało utworzonych zbyt wiele katalogów (119)
Zaproponowane rozwiązanie psuje działanie innych serwerów wirtualnych (120)
Rejestracja zdarzeń (121)
Niedostateczna elastyczność konfiguracji (121)
Zarządzanie wieloma serwerami wirtualnymi za pomocą modułu mod_rewrite (121)
Przepisywanie adresów serwerów wirtualnych (122)
Wykorzystanie dyrektywy RewriteMap do zarządzania serwerami wirtualnymi (125)
Rejestracja zdarzeń dużej liczby serwerów wirtualnych (126)
Podzielenie pliku dziennika (127)
Potokowe procedury przetwarzania dzienników (128)
Podsumowanie (128)
Rozdział 11. Stosowanie proxy (129)
Reguły przepisywania do proxy (129)
Bezpieczeństwo (130)
Apache 1.3 (131)
Apache 2.0 (131)
Usługa proxy bez używania mod_rewrite (132)
Stosowanie proxy z modułem mod_rewrite (133)
Używanie proxy do konkretnych rodzajów plików (134)
Używanie proxy wraz z serwerem aplikacji (134)
Zmiany w treści przesyłanej przez proxy (135)
Wyjątki w przesyłaniu treści strony za pośrednictwem proxy (136)
Szukając gdzie indziej (136)
Podsumowanie (137)
Rozdział 12. Debugowanie (139)
Dyrektywa RewriteLog (139)
Przykład wykorzystania dyrektywy RewriteLog (140)
Unikanie pętli (143)
Dyrektywa RewriteRule w plikach .htaccess (144)
Podsumowanie (146)
Dodatek A Dodatkowe źródła informacji (147)
Skorowidz (149)