Domů arrow Domů arrow Přepisování www adres
Přepisování www adres PDF Tisk E-mail
Zhlédnutí: 2786
Hodnocení čtenářů: / 0
SlabéVynikající 
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
RewriteLogLevel 9

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/
RewriteRule admin$ http://linpro2.corki.info/joomla/administrator

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ší:

  • L-jedná se o poslední pravidlo přepisu, dále se nebude pokračovat.
  • R-umožní přesměrování na externí adresu jako parametr je možné uvést kód chybové zprávy.
  • F-Přesměrování se neprovede, místo toho je zaslán kód 403(přístup nepovolen).
  • G-stránka již neexistuje.
  • S-přeskočí dalších x pravidel uvedených v parametru
  • P-přesměrování je chápáno jako požadavek navnitřní proxy serveru Apache(viz příští pokračování).

Přesměrování lze ovlivnit také pomocí podmínek-direktivouRewriteCond. Jako podmínku lze použít proměnné www serveru Apache jako:

  • HTTP hlavičky: HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_FORWARDED, HTTP_HOST, HTTP_PROXY_CONNECTION, HTTP_ACCEPT
  • vnitřní interní proměnné: DOCUMENT_ROOT, SERVER_ADMIN, SERVER_NAME, SERVER_ADDR, SERVER_PORT, SERVER_PROTOCOL, SERVER_SOFTWARE
  • proměnné připojení: REMOTE_ADDR, REMOTE_HOST, REMOTE_PORT, REMOTE_USER, REMOTE_IDENT, REQUEST_METHOD, SCRIPT_FILENAME, PATH_INFO, QUERY_STRING, AUTH_TYPE
  • časové proměnné: TIME_YEAR, TIME_MON, TIME_DAY, TIME_HOUR, TIME_MIN, TIME_SEC, TIME_WDAY, TIME
  • speciální proměnné: API_VERSION, THE_REQUEST, REQUEST_URI, REQUEST_FILENAME, IS_SUBREQ, HTTPS

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
RewriteCond %{HTTPS} !=on
RewriteRule /joomla/administrator https://%{HTTP_HOST}%{REQUEST_URI}

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:

  • MaxRedirects-zabrání nekonečné smyčce a povolí pouze maximální počet přesměrování udaný v parametru.
  • inherit-je použita i konfigurace předka

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
RewriteRule ^/usermap/(.*) http://linpro2.corki.info/${usermap:$1}

a soubor map.txt vypadá takto:

filip joomla
filb filbar

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
RewriteRule ^/rdmap/(.*) http://linpro2.corki.info/${randmap:web}

Soubor rndmap.txt:

web joomla|joomla1|mambo
filb filbar|filbar1|bartmann

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.

Komentářů
Přidat Nový Hledat RSS
Přidat komentář
Jméno:
Email:
 
Website:
Název:
UBBKód:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
< Předch.   Další >

Zapomenuté heslo
Nemáte účet? Vytvořte jej!
Skype: My status bartfil
Jabber: bartmann@rupyhost.cz

Doporučujeme

Příběhy psů z útulků