mod_rewrite_Podrecznik_administratora_mrewpp.pdf

(376 KB) Pobierz
mod_rewrite. Podrêcznik
administratora
Autor: Rich Bowen
T³umaczenie: Marek Pa³czyñski, Micha³ Rogalski
ISBN: 978-83-246-0465-4
Tytu³ orygina³u:
The Definitive Guide to Apache mod_rewrite
Format: B5, stron: 160
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
Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Przekonaj siê, ¿e mod_rewrite jest mniej skomplikowany
od formu³y uzyskania z³ota z o³owiu
Spis treści
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
6
mod_rewrite. Podręcznik administratora
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
Spis treści
7
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
8
mod_rewrite. Podręcznik administratora
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
Rozdział A
Dodatkowe
źródła
informacji ......................................................... 147
Skorowidz .................................................................................... 149
Zgłoś jeśli naruszono regulamin