
Webovú adresu vídame každý deň, no málokto sa na ňu pozrie pozorne. Pritom je to celkom presne definovaný reťazec, v ktorom má každý znak svoje miesto. Kto ho vie čítať, rozozná podvodný odkaz skôr, pochopí, prečo jeden článok žije na dvoch adresách, a zistí, prečo sa slovenská diakritika v odkazoch zmení na zhluk percent.
URL, URI, alebo adresa?
URL (Uniform Resource Locator) je adresa, ktorá hovorí, kde zdroj nájsť a ako sa k nemu dostať. Odborne ide o podmnožinu širšieho pojmu URI, ktorý všeobecnú syntax popisuje v norme RFC 3986 z roku 2005. Prehliadače sa dnes riadia aj živým štandardom WHATWG URL, ktorý presne určuje, ako spracovať aj nedokonalé adresy, aké ľudia v praxi píšu. V bežnej reči sú „URL“ a „webová adresa“ to isté a nie je dôvod to komplikovať.
Súčiastky jednej adresy
Zoberme si túto ukážku:
https://www.example.sk:8443/clanky/url?zoradit=nove&strana=2#zdroje
- Schéma (
https) určuje protokol. Okremhttpahttpspoznátemailto:,tel:čiftp:. Za schémou nasleduje dvojbodka. - Hostiteľ (
www.example.sk) je doména alebo IP adresa servera. Číta sa sprava:skje doména najvyššej úrovne,exampledoména druhej úrovne,wwwsubdoména. Prehliadač ju cez DNS preloží na IP adresu. - Port (
:8443) je číslo „dverí“ na serveri. Väčšinou ho nevidíte, lebo sa použije predvolený: 80 pre HTTP, 443 pre HTTPS. - Cesta (
/clanky/url) určuje konkrétny zdroj na serveri. Kedysi zodpovedala priečinkom na disku, dnes je to často len pomenovanie, ktoré si prekladá redakčný systém. - Query (
?zoradit=nove&strana=2) nesie parametre vo dvojiciach názov=hodnota, oddelené znakom &. Typicky filtre, vyhľadávanie alebo stránkovanie. - Fragment (
#zdroje) odkazuje na miesto v rámci stránky. Prehliadač ho na server neposiela – spracuje ho sám, keď stránku dostane.
Ako prehliadač so serverom po protokole HTTP komunikuje, vysvetľujeme v článku HTTP bez záhad.
Pred hostiteľom sa ešte môže objaviť časť meno:heslo@. Norma ju pozná, no posielať heslo v adrese je zlý nápad a RFC 3986 jeho používanie odmieta ako zastarané. Dnes sa s ňou stretnete hlavne v jednom kontexte, ku ktorému sa dostaneme nižšie.
Prečo sú v odkazoch percentá
URL smie obsahovať len obmedzenú sadu znakov zo základnej ASCII tabuľky. Všetko ostatné – medzery, diakritika, niektoré interpunkčné znaky – sa zakóduje percentom a dvoma šestnástkovými číslicami za každý bajt v kódovaní UTF-8. Medzera je %20, písmeno „á“ je %C3%A1. Prehliadač vám v paneli adresy ukáže pekné „á“, no keď odkaz skopírujete, často dostanete percentovú podobu.
Z redakčnej praxe: preto na worldwideweb.sk píšeme adresy článkov bez diakritiky (/historia-webu/odkial-sa-vzal-web…). Sú kratšie, lepšie sa zdieľajú a nikoho neprekvapia pri vložení do e-mailu.
Diakritika v doméne: punycode
Doména môže obsahovať aj písmená s diakritikou, napríklad čučoriedky.sk. Systém DNS však pozná len ASCII, preto sa takéto meno prevádza do podoby punycode podľa RFC 3492 a dostane predponu xn--. To, čo vidíte pekne napísané, prehliadač v skutočnosti hľadá pod menom typu xn--…. Má to aj odvrátenú stranu: niektoré znaky z cudzích abecied vyzerajú rovnako ako latinské (cyrilské „а“ a latinské „a“). Prehliadače preto pri podozrivých kombináciách radšej zobrazia surovú podobu xn--.
Ako čítať podozrivý odkaz
Rozhodujúca je vždy doména tesne pred prvou samostatnou lomkou, čítaná sprava. https://mojabanka.sk.overenie-uctu.example/ nepatrí banke, ale doméne overenie-uctu.example. A tu sa vraciame k časti s menom a heslom: adresa https://[email protected]/ vedie na podvod.example – všetko pred zavináčom je len „meno používateľa“. Prehliadače na takéto adresy dnes upozorňujú, no v e-mailoch a SMS sa tento trik stále objavuje.
Absolútne a relatívne adresy
V HTML kóde stránok často nenájdete celú adresu, ale len jej časť. Odkaz href="/kontakt/" je relatívny k hostiteľovi: prehliadač doplní schému a doménu aktuálnej stránky. Odkaz href="obrazok.webp" je relatívny k aktuálnej ceste, takže na stránke /clanky/url povedie na /clanky/obrazok.webp. Existuje aj zápis začínajúci dvoma lomkami (//example.sk/…), ktorý prevezme len schému. Presný postup, ako z relatívneho odkazu vznikne úplná adresa, popisuje RFC 3986 v kapitole o rozlišovaní referencií. Pri sťahovaní webu na inú doménu je to dobrá správa – relatívne odkazy fungujú ďalej bez úprav.
Veľké a malé písmená, dĺžka
Schéma a doména nerozlišujú veľké a malé písmená: HTTPS://WorldWideWeb.SK je tá istá adresa ako https://worldwideweb.sk. Cesta a parametre však rozlišovať môžu – závisí to od servera. Linuxový server s Apache bežne považuje /Clanok a /clanok za dva rôzne súbory, Windows server s IIS nie. Najbezpečnejšie je preto písať cesty dôsledne malými písmenami.
Pevný limit dĺžky norma nestanovuje. RFC 9110 len odporúča, aby klienti aj servery zvládli aspoň 8 000 znakov. V praxi je rozumné držať adresy krátke: dlhé odkazy s desiatkami sledovacích parametrov sa lámu v e-mailoch a ľuďom nepovedia nič o obsahu.
Jedna stránka, viac adries
Pre server sú /clanok a /clanok/, verzia s www a bez neho, či adresa s parametrom ?utm_source=… technicky rôzne URL. Pre vyhľadávače to môže znamenať duplicitný obsah. Riešením je trvalé presmerovanie na jednu podobu a značka <link rel="canonical">, ktorou stránka sama povie, ktorá adresa je tá hlavná.
Malá perlička na záver: Tim Berners-Lee v článku New York Times (blog Bits) z roku 2009 priznal, že dve lomky za http: vlastne neboli potrebné. Keby ich vynechal, ľudstvo by vraj ušetrilo kopu papiera a písania. Zostali však v norme dodnes – a s nimi aj zvyk, že ich prehliadače radšej skryjú.