Tečka - Lomítko - Dvojtečka - Rozklad URL a adres
Když pracujete na počítači, tak po čase prostě nějak tušíte, jak se píšou cesty k souborům a kam se píšou lomítka nebo tečky. Ale proč se tam píšou? Já tomu taky moc nerozumím, ale zjistil jsem, že sepsáním svých postřehů mohu leckomu pomoci.
Tento text je záměrně neodborný a nepřesný. Věřím ale, že mě za to nikdo nezastřelí. Většina z konvencí zápisů souborů a cest, které se vyskytují na webu, vychází z operačních systémů Unix a Linux.
Dvě tečky a lomítko znamenají nadřazený adresář. To pravděpodobně znáte.
../
například <img src="../kocicka.gif"> načte obrázek chytré kočičky z nadřazeného adresáře.
Jedna tečka a lomítko znamená v zápisu cesty "tento adresář". Většinou je ta tečka zbytečná, a proto se s tím v praxi setkáte velmi zřídka. Například odkaz na soubor kontakt.html do stejného adresáře se může zapsat takto:
<a href="./kontakt.html">odkaz</a>
Jistě chápete, že v tomto případě se dá ta tečka a lomítko vynechat, je to tedy to samé jako
<a href="kontakt.html">odkaz</a>
Soubory, které začínají tečkou, jsou skryté. Například soubor s názvem .htaccess je skrytý.
Každý linuxový adresář automaticky obsahuje dva objekty -- tento adresář (./) a nadřazený adresář (../). Z logiky skrývání vyplývá, že tyto objekty jsou skryté, protože začínají tečkou. Jestli vám není jasné, jak může adresář obsahovat sám sebe, tak to nechte koňovi, má větší hlavu. Já to někde četl a během pár let studia na matfyzu jsem si na takovéhle divné věci docela zvyknul.
Spousta lidí se domnívá, že jméno každého soboru musí obsahovat tečku na oddělení přípony.
Například když se soubor jmenuje robots.txt
, tak
robots
je jako jméno souboru txt
je
přípona označující typ. Většinou to tak opravdu je (a je to rozumná konvence),
ale soubor ve svém názvu tečku obsahovat nemusí. Třeba soubor s názvem accesslog
je v
pohodě rovnoprávný soubor. Nemá příponu, to je pravda, to ale nic neznamená.
Hodně lidí se domnívá, že co nemá někde v názvu tečku, tak to že je adresář (neboli složka). Většinou tomu tak opravdu je, ale nelze to zobecňovat. Co v názvu nemá tečku, nemusí být adresář, může to být klidně soubor. Mimochodem to, co je adresář, by při zápisu URL za sebou správně mělo mít lomítko.
Určitě jste zvyklí psát tečky třeba do adresy www.seznam.cz
.
Tečky v tomto případě oddělují jednotlivé úrovně doménových jmen. CZ je
doména nejvyšší úrovně (tak zvaná Top Level Domain, TLD, někdy též
generická doména), "seznam" je doména
druhé úrovně a "www" je doména třetí úrovně. Každý majitel domény druhé
úrovně si na serveru může vytvořit neomezené množství domén třetí úrovně --i
čtvrté, páté atd. Musí se to ale oddělovat tečkami. Všechna doménová jména
zapsaná dohromady tvoří tak zvané hostname, zjednodušeně řečeno jméno
počítače. Například hostname těchto stránek je celé www.jakpsatweb.cz
.
Tečkami se oddělují i číslice v zápisu IP adresy. Například adresa 127.0.0.1 je vnitřní adresa každého počítače, adresa 66.249.85.99 je veřejnou adresou jednoho ze serverů Google. V IP adrese jsou vždy čtyři čísla oddělená třemi tečkami (pokud nebudu uvažovat o systému IPV6, kde je těch čísel šest a zapisuje se to nějak divočeji).
To jste si jistě v praxi všimli, že lomítko odděluje adresáře. (Anglicky se adresář jmenuje directory, ve Windows se adresářům říká složky, anglicky folder, je to všechno to samé.) Přesnější ovšem je říct, že v cestách se lomítkem zápis adresáře ukončuje. V URL teda rozhodně. Třeba když mám cestu k souboru
adresar/druhy_adresar/soubor.html
tak to první lomítko patří k tomu adresáři, další lomítku k tomu druhému adresáři. Když totiž chci na webu odkázat jenom na ten adresář, tak napíšu
adresar/
nebo
adresar/druhy_adresar/
Toto je korektní zápis cesty k adresářům (a server v nich obvykle hledá index.html). Lomítko na konci znamená adresář.
Jiná věc je ta, že když požádám webový server o toto:
adresar
ale server nic takového nenajde. V tom případě za to server (z vlastní iniciativy) zkusí doplnit lomítko (převést to na adresář). Pokud takový adresář existuje, tak mi ho vrátí (respektive jeho index.html). Jak ale jistě chápete, zápis adresar se mohl klidně vztahovat k souboru (bez přípony). Z toho plyne poučení, že na adresáře je vždycky lepší odkazovat s lomítkem na konci a nenechávat to na iniciativě serveru.
Na Windows se leccos trochu jinak než na normálních počítačích, takže ve Windowsech se adresáře neoddělují lomítky, ale zpětnými lomítky, to je dědictví z DOSu. Například cesta na Windowsech může vypadat takto:
C:\adresar\druhy_adresar\soubor.html
Takový zápis perfektně funguje na Windowsech, ale často selhává na Linuxu nebo Unixu, tam se totiž adresáře oddělují vždy lomítky (tak je to správně). Poslední dobou se mi ale zdá, že se Windows trochu umoudřily, protože většinu adres zapsaných s obyčejnými lomítky pochopí. Dá se tedy psát
C:/adresar/druhy_adresar/soubor.html
a Windowsy si to přeloží do zpětných lomítek na původní zápis
C:\adresar\druhy_adresar\soubor.html
Naopak to ale nefunguje! Pokud na webu budete odkazovat soubory v adresářích pomocí zpětných lomítek, tak se soubory nenajdou. Jde o jednu z nejčastějších začátečnických chyb. Je to chyba zákeřná, protože třeba odkazy zapsané se zpětnými lomítky na disku fungují, ale jakmile se to pošle na server, tak se místo obrázků objevují křížky a po kliknutí na odkaz nelze 404 stránek nalézt.
Poznámka: pokud na české klávesnici neumíte napsat zpětné lomítko \, tak je to pravý Alt + Q.
Root znamená kořen. Když něco začíná lomítkem, bývá to označení rootu. V praxi se můžete setkat se dvěma druhy rootovských adresářů:
Root počítače. Linux funguje trochu jinak než Windowsy, na první
pohled se totiž nestará o to, co má na kterém disku. Všechno má jakoby v
adresáři /. Adresa k souboru se pak na Linuxu nezapisuje C:\něco
,
ale třeba /něco
. Když se pak chci na Linuxu dostat do domovského
adresáře uživatele dusan, tak zadám příkaz
cd /home/dusan/
To cd můžete ignorovat (je to příkaz), ale všimněte si lomítka před adresářem "home". Tím lomítkem říkám, že chci přistupovat k souborům a adresářům od kořene souborového systému. Samotné lomítko prostě znamená root, kořen. Všechny soubory a adresáře na počítači se dají zapsat cestou s lomítkem na začátku. Na Windows nic takového není, možná jakoby Plocha nebo Tento počítač, ale to jsou jenom takové divné náhražky rootu. Normální člověk pracující na Windows se s rootem zapsaným lomítkem moc nesetká, ale je dobré vědět, že to existuje. Na serveru se s tím totiž můžete setkat.
Root webu je trochu něco jiného. Když v HTML napíšu odkaz na adresu začínající lomítkem:
<a href="/">odkaz</a>
a dám tu stránku na web na nějakou doménu, tak tento odkaz vede do rootu (kořene) té
domény. Takže kdyby takový kód byl umístěn například někde na doméně
www.jakpsatweb.cz, tak odkaz bude mířit na adresu https://www.jakpsatweb.cz/
.
Kdybych naopak napsal třeba odkaz
<a href="/directory/file.html">Odkaz</a>
a umístil takový odkaz někam na server (doménu) www.example.com, tak to bude stejné, jako kdybych odkaz namířil na URL
<a href="http://www.example.com/directory/file.html">Odkaz</a>
Ať už chápu root jako root webu nebo root počítače, zápis cesty s lomítkem na začátku je zápis absolutní adresy. Naopak pokud zápis cesty začíná jménem adresáře nebo rovnou jménem souboru, jde o cestu relativní, která se odvozuje z aktuálního adresáře.
Zápis odkazu s lomítkem na začátku se například dobře hodí v případě, že programujete webovou aplikaci, u které nevíte, na jaké doméně bude umístěna, ale potřebujete napsat absolutní odkaz.
Když zapisujete odkaz na doménu, tak je lepší rovnou to rootovské
lomítko za doménu psát. Server si to stejně doplní. Když třeba napíšu
http://www.jakpsatweb.cz
tak si to stejně server přeloží na
http://www.jakpsatweb.cz/
-- kouká do výchozího adresáře -- takže je lepší rovnou to tam psát
Tomu už moc nerozumím, ale všimnul jsem si, že když se napíšou dvě lomítka
//, znamená to začátek sítě. Samozřejmě se může jednat v různých situacích o
různé sítě. Zápis //počítač
nebo //{ip-adresa}
obvykle míří na daný počítač v
síti. Například //192.168.1.20
může být zápis adresy pro jeden z
počítačů nějaké vnitřní sítě. Moc víc o tom nevím.
Na Windowsech někdy fungují jako začátek sítě dvě zpětná lomítka. Zdá se mi, že je v tom docela chaos, protože jindy mi fungují dvě obyčejná lomítka.
Dvojtečka se v zápisech cest k souborům používá tam, kde chci vyjádřit:
Například ve Windows se zápisem C:
myslí disk C. V zásadě se
jedná o adresář, a proto zápis zpravidla pokračuje lomítkem (a protože jsem ve
Windows, tak zpětným): C:\...
, ačkoli to lomítko tam z čistě
formálního hlediska není potřeba.
Internetové protokoly se také ukončují dvojtečkou. Například http:
je hypertextový přenosový protokol, ftp:
je file transfer
protocol, https:
je něco jako http:, ale se zabezpečeným
přenosem. Protokol file:
umožňuje přístup k souborům umístěným
na lokálním počítači. Kromě klasických protokolů existují i pseudoprotokoly
fungující jenom v prohlížečích (např. mailto:, about:, javascript: nebo view-source:).
Http server klasicky naslouchá na portu číslo 80. Server se dá
nakonfigurovat tak, že bude také poslouchat na portu jiném. Pokud se v
zápisu objeví www.example.com:1234
, tak to znamená, že
požadavek míří na port 1234. Používá se to málo, ale je dobré vědět, že to
existuje. Já osobně portům moc nerozumím, ale jsem prostě zvyklý, že když tam píšu
různá čísla, můžu dostávat různé výsledky.
Je čas na jeden příklad URL, na kterém popíšu, co který znak znamená. Například tato stránka má následující URL adresu:
http://www.jakpsatweb.cz/clanky/lomitka-tecky.html
http: je protokol
// je začátek sítě
www.jakpsatweb.cz je hostname, z toho cz je doména nejvyšší úrovně, jakpsatweb je doména druhé úrovně a www je doména třetí úrovně.
/ je lomítko označující root serveru
clanky/ je jméno adresáře (složky).
lomitka-tecky.html je jméno souboru, z toho .html se dá chápat jako přípona označující typ.
Části za doménou (v tomto případě /clanky/lomitka-tecky.html) se říká cesta, anglicky path.
Dokud byl zmiňovaný soubor u mě doma na Linuxu, měl tuto adresu:
/home/yuhu/weby/jakpsatweb/clanky/lomitka-tecky.html
Vidíte počáteční lomítko označující root počítače. Za ním je spousta adresářů a nakonec jméno souboru.
Když s tímtéž souborem pracuju na windowsech, překopíruju si ho tak, že má tuto adresu:
D:\www\jakpsatweb\clanky\lomitka-tecky.html
Vidíte jméno disku ukončené lomítem (aby jako adresář), pár adresářů oddělených zpětnými lomítky (jsem na Windows) a nakonec jméno souboru.
Když se na tentýž soubor na ten disk podívám prohlížečem Firefox, v adresním řádku vidím toto:
file:///D:/www/jakpsatweb/clanky/lomitka-tecky.html
file: je protokol pro přístup k lokálním souborům
// je jako začátek sítě
/ je začátek struktury souborů
D:/ je pro Firefox virtuální adresář
dál je to jasné -- www/jakpsatweb/clanky/
je cesta dalšími
adresáři a lomitka-tecky.html
je jméno souboru. Vidíte, že Firefox si
přepsal zpětná lomítka na obyčejná.
Jak psát web píše Yuhů, Dušan Janovský. Kontakt.