| Přepisování www adres |
|
|
|
| Zhlédnutí: 2786 | ||||||||
| Napsal filbar | ||||||||
| Pátek, 23 březen 2007 | ||||||||
| Aktualizováno ( Neděle, 11 březen 2007 ) | ||||||||
|
Od minula se jistě těšíte na další pokračování seriálu o www serveru Apache, která má být věnováno modulu mod_negitiation, nebo-li přepisování www adres. Takže hned začneme. Pro začátek práce s přepisem adres, jej musíme zapnout direktivouRewriteEngine s parametrem On. Dalším krokem pro počáteční seznánemí bymělo být povolení logu pro modul rewrite(RewriteLog) a nastavení jehopodrobnosti na maximum(RewriteLogLevel): RewriteLog /usr/srv/logs/rewrite_log Tak si zajistíme, že v případě, že se nám něconedaří podle našich představ, že ihned zjistíme, proč tomu tak je.Samotné přesměrování zajistíme direktivou RewriteRule jejiž paramatryjsou řetězec zadaný do prohlížeče a výsledná adresa. Obojí je psánopomocí regulárních výrazů: RewriteRule ^/$ http://linpro2.corki.info/joomla/ Prvnípříklad ukazuje jak si přepsat kořenový adresář www serveru na adresuhttp://linpro2.corki.info/joomla/. Pro neznalé regulárních výrazů jenomuvedu, že znak ^ značí začátek řádku a $ znamená konec řádku. Příklad 2způsobí, že pokud zadáme pro prohlížeče adresuhttp://linpro2.corki.info/joomla/admin, tak budeme přesměrování nahttp://linpro2.corki.info/joomla/administrator. Dobře si všimněte $ nakonci druhého řádku. Kdybych jej tam totiž neumístil, tak řetězec adminje i součástí řetězce v přesměrované adrese a došlo by k nekonečnésmyčce. Jako třetí parametr této direktivy lze ještě uvést několik příznaků z nichž vybírám ty zajímavější:
Přesměrování lze ovlivnit také pomocí podmínek-direktivouRewriteCond. Jako podmínku lze použít proměnné www serveru Apache jako:
Když již známe i to jak nastavit podmínky pro přesměrování, tak simůžeme ukázat jak provádět přesměrování na šifrovaný protokol(viz minulý díl): RewriteEngine On Naprvním řádku zapneme podporu pro přepisování adres, dále nastavímepodmínku pro přepisování, kdy se proměnná HTTPS(protokol připojení)nesmí rovnat zapnuto a nakonec provedeme samotné přesměrování nazabezpečený protokol. Všimněte si zvláště proměnných ve druhémparametru. Jedině tak totiž zajistíme, že pokud uživatel zadá doadresového řádku třeba php skript s nějakými proměnnými, že budepřesměrován na stránku, na kterou se chtěl dostat původně a změní sejenom protokol. Tento text, se však neumísťuje do adresáře, pro kterýmá platit, jak by to svádělo, ale do globální konfigurace Apache, nebodo příslušeného VirtualHostu. Přesměrování můžeme ovlivnit direktivou RewriteOptions, která má pouze dva parametry:
Předposlední direktivou toho modulu je RewriteMap, pomocí kterédefinujeme větší množství přesměrování. Právě s ní souvidí RewriteLock,která zajistí synchronizaci mezi mapou přepisu a externími programy,které mohou mapu tvořit. Mapu lze vytvořit ve formátu čistého textu,kdy za hodnotou pro otestování následuje tabulátor a hodnota cílová. Vkonfiguračním souboru Apache použijeme: RewriteMap usermap txt:/srv/www/map.txt a soubor map.txt vypadá takto: filip joomla DirektivouRewriteMap určujeme jméno mapy, typ mapy(txt) a cestu k mapovémusouboru. V prvním parametru RewriteRule není nic neovyklého. Ve druhémparametru říkáme, že se má v mapě pojmenované usermap hledat řetězecodpovídající části (.*) v regulárním výrazu a má se za to doplnit druhýsloupec. Na velkých serverch využijeme druhouvariantu mapových souborů, kdy druhý sloupec souboru bude obsahovatněkolik hodnot oddělených rourou(znakem |) a jako druhý parametr vRewriteMap zapíšeme rnd:/cesta/k/souboru: RewriteMap randmap rnd:/srv/www/rndmap.txt Soubor rndmap.txt: web joomla|joomla1|mambo Vespojení s mapami se nám můžou hodin interní funkce(int) převodu na malápísmena(tolower), na velká písmena(toupper), unescape(převedeníspeciálních znaků zpět do čitelné podoby), escape(zakódování speciálních znaků): RewriteMap upper int:toupper Pokročilejší možnostipředstavují použití souboru ve formátu databáze (dbm), nebo externíprogram(prg). Tímtobychom dnešní téma vyčerpali a příště se můžete těšit na pokračovánívěnované serveru Apache nakonfigurovaném jako proxy.
Powered by !JoomlaComment 3.22
3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |
||||||||
| < Předch. | Další > |
|---|