Mod rewrite

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

mod_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

Rewrite engine * .htaccess

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]]

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top