Mod rewrite
Author
Albert Floresmod_rewrite je [url= Server|Apache][rewrite engine|přepisovací engine]] v podobě modulu HTTP serveru [[Apache[/url]]. Apache tomuto modulu nechává zpracovat přicházející URL (adresy stránek), které klienti, komunikující se serverem, požadují; mod_rewrite je vyhodnocuje a na základě skriptu uloženém v souboru .htaccess řídí přesměrování, nastavuje stavové HTTP kódy a podobně.
Jazyk pro mod_rewrite
Obsah souboru .htaccess tvoří skript relativně jednoduché syntaxe, který může na jednom řádku obsahovat nejvýše jednu syntaxtickou jednotku - klíčové slovo s možným parametrem nebo parametry nebo poznámku, uvozenou znaky ##, kterou modul při zpracování souboru ignoruje.
Klíčová slova
Klíčová slova mají roli příkazů pro modul mod_rewrite - ovlivňují, co má modul dělat a podle jakých kritérií se rozhodovat. Mohou též nastavovat vnitřní proměnné prostředí (podobně jako direktivy v jiných skriptovacích nebo programovacích jazycích) nebo zjišťovat jejich hodnotu, porovnávat je apod.
Parametry
Některé příkazy vyžadují parametry, ty mohou sestávat z [url=, části URL požadovaného dokumentu, vnitřní proměnné serveru, proměnné připojení, proměnné času a proměnné zvláštního významu. Jejich syntaxe je %{JMÉNO_PROMĚNNÉ}, např. +more pro proměnnou REMOTE_ADDR, která vrací [[IP adresa|IP adresu][konstanta|konstant]], proměnných prostředí nebo se mohou prostřednictvím definovaných operátorů spojovat do složitějších výrazů. Velmi mocným nástrojem modulu je podpora regulárních výrazů, pomocí nichž je možno vybrat adresu z jakékoli množiny tvarů a ty pak zpracovat odlišně, podle potřeby.
Proměnné prostředí mohou být např. hlavičky[/url]] klienta, je to %{REMOTE_ADDR}.
Podmínky a pravidla
Hlavní částí tohoto přepisovacího enginu je „přepisování“ (technicky vzato interpretace) požadovaného URL. K tomu slouží dva základní příkazy: RewriteCond a RewriteRule. +more (Samotný engine se nejdříve musí zapnout sekvencí příkazů Options +FollowSymLinks a RewriteEngine On. ).
Pro samotné přepsání URL se musí modulu pomocí těchto příkazů definovat: # podmínku, do které když daná URL (nebo i jiné proměnné) spadají, tak poté bude přepisovat/interpretovat # pravidlo, jak URL přepsat/interpretovat
RewriteCond a porovnávání
Příkaz RewriteCond (z Rewrite Condition doslova přepisovací podmínka) definuje podmínku prostřednictvím dvou parametrů, které za ním následují a které se porovnávají. První většinou bývá buď samotná URL nebo její část v podobě proměnné (to, co se porovnává), a druhý parametr je to, vůči čemu se porovnává.
První jeden až dva znaky druhého parametru určuje jaké porovnávání vůbec použít (např. > pro „je větší než“, < pro „je menší než“, = pro „je rovno“, ^ pro „odpovídá následujícímu regulárnímu výrazu, ukončeném znakem $“, -f pro „existuje (jako soubor)“, atd). +more Těmto znakům může předcházet znak . , který neguje význam porovnávání.
RewriteRule
Příkaz RewriteRule určuje skutečné URL požadovaného dokumentu, který server zpracuje. Pomocí dvou parametrů, z nichž první může obsahovat regulární výraz, dokáže RewriteRule provést změnu třeba jen v určité části z požadované URL (např. +more adresáři v cestě nebo v určité subdoméně). Navíc, části regulárního výrazu prvního parametru, které jsou uzavřeny do oblých závorek; mohou být v druhém parametru odkazovány jako $1, $2, $3… (kde číslo za $ určuje pořadí výskytu otevírací závorky regulárního výrazu zleva doprava). Obdobně se lze identifikárory %1, . %n odkazovat na regulární výrazy obsažené v RewriteCond (v oblých závorkách).
Řetězení a příznaky
RewriteCond a RewriteRule mohou mít i třetí parametr a to je pole příznaků (angl. flags, vlajek). +more Příkazů RewriteCond může být i více pod sebou a pak případný třetí parametr ovlivňuje, zdali je má k přesměrování dojít, je-li splněna alespoň jedna z podmínek za RewriteCond, nebo všechny….
U RewriteRule pole příznaků (oddělených čárkami, je-li jich více) může ovlivnit zřetězení s následujícím pravidlem nebo naopak ukončit vykonávání . htaccess po aplikování pravidla, vynutit u požadovaného dokumentu určitý status, korespondující s chybovým status kódem HTTP (např. +more gone, forbidden), nastavit proměnnou prostředí, MIME-type nebo dokonce cookie.
Související články
Externí odkazy
[url= Server]url=http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html]Oficiální dokumentace (verze 2.0)[/url]
[[Kategorie:Apache[/url]]