mod_rewrite

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Question book-new.svg

Tento článek není ozdrojován a může obsahovat informace, které je třeba ověřit.
Jste-li s předmětem článku dostatečně seznámeni, pomozte prosím vylepšit tento článek doplněním věrohodných zdrojů, které dokládají uvedená tvrzení.

mod_rewrite je přepisovací engine v podobě modulu HTTP serveru Apache. 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ě.

Obsah

[editovat] 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.

[editovat] 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.

[editovat] Parametry

Některé příkazy vyžadují parametry, ty mohou sestávat z 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 HTTP, čá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ř. pro proměnnou REMOTE_ADDR, která vrací IP adresu klienta, je to %{REMOTE_ADDR}.

[editovat] 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. (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:

  1. podmínku, do které když daná URL (nebo i jiné proměnné) spadají, tak poté bude přepisovat/interpretovat
  2. pravidlo, jak URL přepsat/interpretovat

[editovat] 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). Těmto znakům může předcházet znak !, který neguje význam porovnávání.

[editovat] 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ř. 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).

[editovat] Řetězení a příznaky

RewriteCond a RewriteRule mohou mít i třetí parametr a to je pole příznaků (angl. flags, vlajek). Příkazů RewriteCond může být i více pod sebou a pak případný třetí parametr ovlivňuje, zda-li 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ř. gone, forbidden), nastavit proměnnou prostředí, MIME-type nebo dokonce cookie.

[editovat] Související články

[editovat] Externí odkazy

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Tisk/export
Nástroje
V jiných jazycích