Syndróm dvoch lomítok v URI
Do tohto týždňa som predpokladal (mylne) v súvislosti s URI toto:
a) dve po sebe idúce lomítka majú význam jedného (a rekurzívne aj viac ako dve),
b) URI s takýmito lomítkami sú prehliadačom „spracovávané“.
Nie nie sú a zároveň spôsobujú zvláštny (a vlastne logický) efekt.
Vytvorte si v root adresári dve zložky: ‚images‘ a ‚document‘.
Do zložky ‚images‘ vložte súbor ‚image.jpg‘ a do ‚document‘ nahrajme tento stručný dokument s názvom ‚document.html‘:
<html>
<body>
<h1>Syndróm //</h1>
<img src="../images/image.jpg" alt="Syndrom" />
<hr />
© 2005 rony
</body>
</html>
Zobrazte si teraz dokument zadaním http://vasadomena/document/document.html a zistíte, že to funguje.
Skúste teraz http://vasadomena/document//document.html a obrázok je preč.
Živý test pokiaľ sa Vám to nechce robiť:
http://www.madaj.net/test/document/document.html
http://www.madaj.net/test/document//document.html
Pre mňa je to paradox, pretože súčasne existuje „duplicitnosť“ URI v zmysle defaultných dokumentov a /index.cgi?id=1 je totožné zvykom s /?id=1 a lomítka (prázdne názvy zložiek) za významné brané sú. Ale kto už videl zložku s nulovou dĺžkou svojho pomenovania?
Predstav si, keby tak MS nahradil defaultný systémový adresár c:\windows za c:\\ :))
Duplicitnosť URI (aka /index.cgi?id=1) je veľmi jednoducho vysvetliteľná:
1) Na serveri sú nadefinované názvy súborov, ktoré sa majú zobraziť, ak nie je zadané meno súboru a nie je povolené zobraziť zoznam súborov v adresári. (t.j. napr. index.cgi)
2) Všetko za otáznikom „?“, vrátane otáznika, sú GET parametre pre volanú stránku a tak ich server neberie ako súčasť mena stránky, ktorú má zobraziť. Čiže zrazu nemá akú stránku zobraziť. Začne sa správať podľa bodu 1)
Ohľadom dvoch lomítok (či vraj po slovensky „lomiek“). Skôr si myslím, že zaúraduje hostiteľský systém, na ktorom sú stránky, ale s istotou to povedať neviem,
[2] predpokladam, ze si to vysvetlil drahym citatelom, pretoze defaultne nazvy web servra samozrejme ovladam ;-) a nepokladam to za neocakavany jav ;-)
Problem dvoch lomitok ale uz ano ;-) Istotu ziskas lahko, odskusas si to na relevantnom pocte hostitelskych systemov. Apache mozes vynechat ;-)