Kurs mod_rewrite: Dyrektywy i składnia



RewriteEngine - dyrektywa włączająca / wyłączająca silnik przepisywania adresów.

RewriteEngine On|Off



RewriteBase - dyrektywa określa ścieżkę bazową (adresu URL)

RewriteBase scieżka



RewriteRule to podstawowa dyrektywa mod_rewrite i definiuje dokładnie jeden wzorzec przepisywania.

RewriteRule wzorzec adres_docelowy [flagi]

wzorzec - czyli oparty o wyrażenia regularne zgodne z perlem (PCRE - Perl Compatible Regular Expression) wzorzec dopasowania URI-Path. Obrazowo mówiąc wzorcem objęcte jest to wszystko co jest po nazwie domeny (bez /) i nie zawiera argumentów query stringa.

adres_docelowy - adres na jaki ma zostać wzorzec zamieniony (adres lub ścieżka docelowa).

flagi - dodatkowa informacja dla Apache'a, informująca o sposobie wykonania przepisania lub opcjach/operacjach dodatkowych.



RewriteCond - dyrektywa określająca dodatkowe warunki wykonania RewriteRule.

RewriteCond testowana_zmienna wzorzec_dopasowania [flagi]

testowana_zmienna - moduł mod_rewrite umożliwia wykorzystywanie w warunkach zmiennych systemowych, nagłówków, ciasteczek, itp.
Szczegółowa lista tych zmiennych została opisana w oddzielnym poście.

wzorzec_dopasowania - podobnie jak w przypadku RewriteRule jest to oparta o wyrażenia regularne maska dopasowania. Dodatkowo poza wyrażeniem regularnym są dodatkowe warianty:

>wartość
Sprawdza czy testowana zmienna jest większa od podanej warości.
RewriteCond %{TIME_HOUR} >12 sprawdza czy jest przed południem.
<wartość Sprawdza czy testowana zmienna jest mniejsza od podanej wartości.
=wartość Czy jest równa.
-f Sprawdza czy zmienna (scieżka) jest plikiem.
-d Sprawdza czy zmienna (scieżka) jest katalogiem.
-s Sprawdza czy zmienna (scieżka) jest plikiem i czy plik nie jest pusty.
-l Sprawdza czy zmienna (scieżka) jest linkiem symbolicznym.
-F Sprawdza czy zmienna (scieżka) jest plikiem i czy jest dostępny (uprawnienia).
Testowanie dostępności odbywa się poprzez podzapytanie.
-U Sprawdza czy zmienna jest prawidłowym i dostępnym adresem URL.
Testowanie dostępności odbywa się poprzez podzapytanie.



flagi - określają opcje dodatkowe podczas wykonywania dyrektywy

NC (nocase)
Ingoruje wielkość liter.
OR
W przypadku wielu dyrektyw RewriteCond zmienia ich warunek logiczny na "lub".
# jeżeli HTTP_REFERER zawiera onet.pl lub interia.pl
RewriteCond %{HTTP_REFERER}
onet\.pl [OR]
RewriteCond %{HTTP_REFERER} interia\.pl



Po każdej dyrektywie RewriteCond występuje RewriteRule. Istnieje również możliwość zastosowania wielu dyrektyw warunkowych dla jednego polecenia RewriteRule.

Przykład:

RewriteEngine On
RewriteCond %{TIME_HOUR} >3
RewriteCond %{TIME_HOUR} <4
RewriteRule ^(.*)\.php /prace_nocne.html


W tym przykładzie wszystkie odwołania do każdego pliku *.php pomiędzy godziną 3 a 4 zostaną przekierowane na plikprace_nocne.html.


RewriteLock - dyrektywa ustawia ścieżkę do pliku wykorzystywanego przez RewriteMap do synchronizacji

RewriteLock scieżka


RewriteLog - dyrektywa ustawia ścieżkę do pliku, gdzie apache ma logować zdarzenia wykonywane przez mod_rewrite. Ścieżka może być bezwzgędna lub względna (względem DOCUMENT_ROOT).

RewriteLog scieżka


RewriteLogLevel - ustawia poziom szczegółowości logowania silnika przepisywania adresów. Używajcie go ostrożnie. Przy poziomie większym niż 2 logi puchną w zastraszającym tempie.

Logowanie błędów najlepiej stosować tylko na czas testów serwisu, w środowisku produkcyjnym najlepiej nie logować nic (RewriteLogLevel 0).

RewriteLogLevel poziom


RewriteMap - dyrektywa pozwala nam na określenie mapy przekierowań. Samo przekierowanie polega na znalezieniu odpowiedniej wartości dla podanego klucza. Dyrektywy nie można stosować lokalnie w pliku .htaccess!

${ NazwaMapy : KluczDopasowania }
${ NazwaMapy : KluczDopasowania | WartośćDomyślna }

Definicje przekierowań określamy w oddzielnym pliku (w formacie plain text, ) lub skypcie. Do dyspozycji mamy również klika wbudowanych funkcji.

Typy map i format składowania:

 

txt Standard Plain Text. Najprostrza mapa przekirowań. Plik tekstowy z dopasowaniem 1:1.
rdn Randomized Plain Text. Pozwala na losowe dopasowanie wartości do klucza dopasowania. Warianty rozdzielone "|".
dbm[=type] Hash File. Działanie podobne do plików tekstowych jednak dane zapisane są w formacie DBM. To forma szczególnie istotna gdy mapy przekształceń są naprawdę duże, klucze dopasowania są indeksowane więc wydajność jest zdecydowanie większa.
int Internal Function. Funkcje wbudowane. Do dyspozycji mamy: tolower, toupper, escape oraz unescape.
prg External Rewriting Program. Zewnętrzny program (skrypt) dokonujący translacji adresu. Funkcja niezwykle istotna jeżeli potrzebujemy dokonać nawet bardzo skomplikowanych translacji.





RewriteOptions- dyrektywa ustawia lub zwalnia opcje niestandardowe mod_rewrite.

RewriteOptions Options

Do dyspozycji mamy

inherit - zwalnia lokalne ustawienia zastępując je nadrzędnymi oraz

MaxRedirects - ustawia maksymalną ilość przekierowań.



Proszę czekać...
Nie możesz komentować. Bartosz Stasiurka umieścił Cię na czarnej liście lub Twoje konto nie jest aktywne.