Relativní cesta k souboru php. Absolutní a relativní vazby

Jak víte, v parametru href značky () musíte zadat cestu k odkazovanému souboru.
Mnoho lidí píše něco jako http://somesite.ru/catalog/doc.html. Ano, nikdo se nehádá, funguje to. Ale je tu jedno "ale". Podívejme se na příklad.

Nechte svůj web hostovat například na nějakém bezplatném hostingu a jeho adresa byla následující: http://fsite.freehosting.ru.
Na serveru je cca 100 dokumentů. A tak se rozhodnete přesunout svůj web na jinou doménu,
ať je to placený hosting v zóně ru: http://site.ru. Měli bychom nyní změnit http://fsite.freehosting.ru na http://site.ru všude?
Ano, díky editorům, jako je homesite, je to možné. Ale to není řešení.
Předpokládejme, že před nahráním stránky na server zkontrolujete její funkčnost
na vašem domovském serveru Apache (pro ty, kteří ještě nevědí, co je to „domovský server“, přejděte sem (Instalace a konfigurace serveru Apache) a místo http://localhost budete muset napsat http:// site.ru s tím souhlasím, přinejmenším je to nepohodlné.

Řešením je při zadávání cesty k souboru nebrat v úvahu jeho pozici na webu, ale jeho pozici na serveru.

Absolutní cesta

Vezměme si například soubor doc.html, který se nachází na adrese: http://somesite.ru/catalog/doc.html. Jak víte, server obsahuje složku www. Jak vidíme z adresy, tato složka obsahuje složku katalogu a již obsahuje soubor doc.html.

Pokud při zadávání cesty k souboru vložíte / před adresu, bude to podobné následujícímu: kořenový_adresář_na_severu/www/cesta k souboru.
To znamená, že http://somesite.ru/catalog/doc.html je podobné následujícímu: /catalog/doc.html.
Takže, když je před adresou /, znamená to, že „odpočítávání“ začíná z adresáře www.
Nyní můžete místo http://localhost/index.html psát /index.html z libovolného dokumentu.
Ale abyste se dostali do adresáře cgi, musíte napsat toto: /cgi-bin/cesta k souboru.

Cesty vytvořené pomocí výše popsaných metod se nazývají absolutní, protože je uvedena absolutní (úplná) cesta k souboru na serveru.

Relativní cesta

Existují také relativní cesty, které jsou určeny relativně k samotnému dokumentu, ze kterého odkaz pochází.
Pokud například vytvoříte odkaz v doc.html newcat/new.html, znamená to, že soubor new.html je umístěn v adresáři newcat, který je zase ve stejném adresáři jako soubor doc.html. Jak vidíte, tato cesta je relativní k souboru doc.html. Ať je tento soubor umístěn kdekoli, cesta newcat/new.html bude vždy platná, pokud jsou soubor doc.html a adresář newcat na stejné úrovni (tj. ve stejném adresáři).

Můžete také přesunout adresář nahoru vzhledem k dokumentu. Chcete-li to provést, musíte napsat ../.
Například existuje velký adresář, který obsahuje dva adresáře: primární a sekundární. Primární adresář obsahuje již známý soubor doc.html; a v sekundárním adresáři je soubor new.html. Chcete-li vytvořit odkaz ze souboru doc.html na soubor new.html, musíte napsat ../secondary/new.html. Ale pokud je velký adresář umístěn v adresáři www, pak by cesta k souboru new.html mohla být zadána takto: /big/secondary/new.html

Místo závěru stojí za to říci, že použití absolutních a relativních cest značně usnadňuje práci webmasterům, ať už začátečníkům nebo profesionálům. Využijte tedy této příležitosti, jak se říká, naplno a snažte se vyhýbat cestám jako http://site.ru/catalog/file.file, nebo se alespoň uchylujte k jejich pomoci co nejméně.

Dobrý Špatný

Absolutní cesty


V tomto případě je vše velmi jednoduché, uvádíme přímou cestu k souboru umístěnému na jiné doméně. Je možné zadat zkrácenou cestu pomocí dvou lomítek na začátku bez explicitního zadání http nebo https a server sám nahradí požadovaný protokol (rozšíření) podle nastavení serveru. Je důležité si uvědomit, že toto zobrazení je nezbytné pro navigaci mezi weby:
http://google.com

Relativní ke kořenu webu


V tomto případě prohlížeč vezme doménu webu a nahradí na ni zadaný odkaz. V tomto případě to bude fungovat http://site/css/style.css. V případě http se není třeba obávat https, protože se vezme ve formě, v jaké je stránka aktuálně otevřená, tedy u http to bude http. Je také velmi vhodný pro přenos určitých funkcí mezi různými weby nebo přenos webu z jedné domény do druhé, aniž byste se dotkli kódu. Prioritní způsob určení cest ke stránkám a souborům.

Ohledně této stránky


Méně oblíbená metoda, protože vezme aktuální stránku a do cesty přidá novou adresu ..com/trick/css/style.css . Téměř nemožné použít v případech, kdy používáme CNC.

Pomocí základní značky


V tomto případě namísto standardní substituce domény bude relativní cesta nahrazena cestou od báze. To znamená, že obdržíme soubor umístěný:
http://site/tricks/css/style.css

Relativní a absolutní cesty v PHP

Vše je velmi jednoduché, při práci v souborovém systému se budeme držet pravidel pro práci s cestami v PHP. Pokud příkaz předáme klientskému prohlížeči, pak se použijí HTML cesty. To znamená, že v následujícím příkladu předáme z PHP cestu do prohlížeče se stránkou, na kterou potřebuje přejít. Skutečnost, že prohlížeč provedl přechod mezi stránkami, je vidět v adresním řádku:
header("Umístění: /stranka2.php");
Otevřeme tedy stránku page1.php a do adresního řádku se zapíše page2.php a celá pointa je v tom, že prohlížeč NEJPRVE načetl stránku page1.php a poté obdržel informaci s přesměrováním a NAČTAL druhou stránku page2. php. V tomto případě bylo přesměrování na straně klienta (prohlížeče), což znamená, že používáme pravidla související s HTML (webová adresa).

Absolutní cesta v PHP

Absolutní cesta v PHP je považována za absolutní cestu z adresáře, ve kterém je nainstalován webový server. Tuto cestu lze získat z:
$_SERVER["DOCUMENT_ROOT"]
Vezmeme-li tento server jako příklad, jeho cesta je: /home/school/public_html/schoolphp, což znamená, že pro zadání úplné cesty k fotografii „/photo/img1.jpg“ musíte zadat následující cesta:
getimagesize("/home/school/public_html/schoolphp/photo/img1.jpg"); getimagesize($_SERVER["DOCUMENT_ROOT"]."/photo/img1.jpg");
Rád bych poznamenal, že web může být umístěn v podadresáři, tedy pro:
http://site/forum/
Použití DOCUMENT_ROOT může být extrémně obtížné, protože fórum (jako externí skript) ještě neví, kde se na webu bude nacházet. Existuje několik způsobů, jak se s tímto problémem vypořádat, uveďme několik:

1) Vytvořte stránku jako subdoménu.

2) Napište absolutní cestu do configu v config.php, tedy:
Core::$ROOT = $_SERVER["DOCUMENT_ROOT"]; getimagesize(Core::$ROOT."/photo/img1.jpg"); // použijte absolutní cestu, kterou lze upravit
Nyní můžete bez výčitek svědomí propojit celý web s Core::$ROOT, a pokud náhodou potřebujete změnit cestu k přiloženému souboru, můžete přepsat hodnotu Core::$ROOT;

Vzhledem k počátečnímu souboru (základu)

V mnoha systémech index.php existuje jediný vstupní bod, to znamená, že se otevře index.php a z něj se připojují další soubory.
zahrnout "./modules/allpages.php";
V tomto případě bude allpages.php připojen k cestě: /home/school/public_html/schoolphp/modules/allpages.php. Tato metoda je výhodná, protože pokud do souboru allpages.php napíšete include: include "./modules/module/page.php";, bude se stále prohledávat vzhledem ke vstupnímu bodu, jmenovitě index.php:
/home/school/public_html/schoolphp/modules/module/page.php
Toto je poměrně pohodlná implementace vzhledem k tomu, že jasně známe strukturu naší aplikace vzhledem k kořenovému indexu.php. I když zavoláme jakýkoli jiný soubor než index.php, cesty budou fungovat úplně stejně. Nazvali jsme dir.php , což znamená, že cesty budou vztaženy k souboru dir.php!

Co ještě potřebujete vědět?

Nemohl jsem nepřipomenout těm, kteří zapomněli, nebo navrhnout těm, kteří nevědí, že se můžete vrátit nejen hluboko do adresářů, ale také nahoru (složky zpět) a jejich syntaxe je docela jednoduchá:
obsahovat "../soubor.php";
V tomto případě bude adresář tohoto souboru nebo kořenový index.php odebrán a vrácen o 1 složku zpět, kde bude prohledán soubor „file.php“.

DOCUMENT_ROOT není jedinou možností, jak získat kořenovou cestu webu. Podívejme se na příručku: "Kořenový adresář dokumentu, ve kterém je spuštěn aktuální skript, je přesně ten, který je uveden v konfiguračním souboru serveru." . To znamená, že pokud je cesta v konfiguračním souboru zapsána špatně, nebude fungovat celý web. co dělat? Můžete napsat adminům a majitelům hostingu, který server hostí, s nadějí, že opraví své nedostatky. Nebo hledejte stabilní alternativu, což je __DIR__, to je absolutní cesta k danému souboru, kde běží kód. Řekněme, že máme konfigurační soubor v konfigurační složce, a abychom se pomocí __DIR__ nemuseli vracet vždy o jednu složku zpět psaním __DIR__"/../" můžeme do naší proměnné bezpečně zapsat __DIR__, v příkladu níže jsem to napsal do vlastnosti třídy (lekce č. 24, kdo to nedostal, použijte běžnou proměnnou):
Jádro::$ROOT = __DIR__; // Nebo pro staré PHP - dirname(__FILE__);
Také jsem vám chtěl připomenout něco zajímavého a důležitého. Podle zabezpečení webový server zakazuje pohyb v adresářích nad kořenem webu. To znamená, že web je umístěn na následující cestě: /home/school/public_html/schoolphp, ale obsah složek /home nebo /home/school nebude k dispozici ke čtení.

Může PHP používat HTML cesty? Ano, ve speciálních funkcích, například:
file_get_contets("http://site");

Praxe

Ve svých starých projektech jsem používal DOCUMENT_ROOT, nyní jsem přešel na relativní index.php cesty "./folder/file".

Zend2, produkt od vývojářů PHP, jeden z nejkomplexnějších FrameWork v současnosti, také používá relativní cesty s jinou syntaxí, než je ta moje, tedy „složka/soubor“.

Fórum IPB.3 používá dirname(__FILE__).

Závěry:

1) V HTML používáme cesty relativní ke kořenu webu, konkrétně „/file.php“ (řádek začíná lomítko).
2) v PHP používáme relativně ke kořenovému souboru "./file.php" (řádek začíná tečka a lomítko), alternativou by bylo použití vlastnosti inicializované v kořenovém adresáři: __DIR__;
3) Přesměrování záhlaví používá cesty z HTML. PHP práce se souborovým systémem (připojování souborů, ukládání a úprava obrázků) - s cestami PHP.

Při vývoji webu často musíte určit cesty k souborům, odkazy na dokumenty a stránky.
V knihách o výpočetní technice se často můžete setkat s používáním výrazů absolutní a relativní cesty k souborům. Často autor nevysvětluje, co konkrétní cesta znamená. Čtenář je následně zmaten, když autor následně hovoří o použití absolutních a/nebo relativních cest.
Řekněme, že máte web a potřebujete vytvořit hypertextový odkaz (odkaz) na jednu ze stránek webu. Zde musíte vybrat, který typ cesty použít: relativní nebo absolutní.

Je velmi důležité pochopit, kde je která cesta potřebná a jak ji nejlépe použít. Absolutní cestu lze zadat pouze jedním způsobem. Ale relativní, na rozdíl od absolutního, má několik použití.
Přečtěte si více o tom, jak a kde se používá absolutní a relativní cesta k souborům, zkusím vám to dnes říct.

Jelikož se nejvíce věnuji webovým technologiím, uvedu příklady související s tvorbou webu.

Absolutní cesta

Pokud je odkaz úplnou adresou URL souboru nebo stránky, je absolutní cesta. V tomto případě musí být v adrese přítomen použitý protokol. Například, http://www.site je absolutní cesta ke konkrétní webové stránce. V tomto případě absolutní cesta na hlavní stránku mého blogu. Kde je protokol http, A www.stránka doména (název).

Pokud například zadáte odkaz na adresář http://yourdomain.ua/web/ pak se načte (zobrazí) indexový soubor. Toto pravidlo platí hlavně pro statické stránky. Protože při použití programovacího jazyka můžete vytvořit interní směrování. Indexový soubor je obvykle soubor s názvem index.php, index.html, index.phtml, index.shtml. Abyste mohli použít jiný indexový soubor, musíte vytvořit soubor s názvem .htaccess v požadovaném adresáři a napsat do něj nějakou direktivu. Úprava a vytvoření souboru .htaccess, stejně jako směrování pomocí programovacího jazyka, je nad rámec tohoto článku.

V zásadě se absolutní cesta používá, když potřebujete odkaz na jiný web. Jinými slovy, pokud chcete poslat návštěvníka na jiný web, musíte použít absolutní cestu. Tuto cestu však lze použít na vašem vlastním webu. Mnoho lidí se však domnívá, že odkazy na webu by měly být relativní.
Použití absolutní cesty může způsobit určité problémy. Například při přenosu webu z místního počítače na server (to je případ, kdy jste na místním počítači použili adresy ve tvaru http://localhost/sitename.ua/…). Potíže mohou nastat, když je potřeba změnit doménu (název webu). Přestože všechny tyto obtíže lze vyřešit, budete jim muset věnovat nějaký čas.
Když jsou mínusy, musí být i plusy. Vezměme si například situaci, jako je odcizení obsahu z vašeho webu. V praxi jsem se nejednou přesvědčil, že je kradený celý text, aniž by zůstal zpětný odkaz na originál. Takže při použití absolutních cest můžete získat zpětné odkazy z webu, kde se ukradený obsah nachází. Ale to je pouze v případě, že vaše interní propojení bylo provedeno pomocí absolutních cest. Ačkoli to ne vždy funguje, nejednou jsem si všiml, že se objevily odkazy z webů jiných lidí, na kterých byl můj obsah umístěn.

Trochu odkopávám od tématu, chci o tom krátce pohovořit co je URL.

Každá webová stránka nebo dokument na internetu má svou unikátní adresu, která se nazývá URL.
URL— jednotný lokátor (identifikátor umístění) zdroje. URL je zkratka pro Uniform Resource Locator. Můžete se také setkat s takovým dekódováním, jako je Universal Resource Locator (univerzální lokátor zdrojů). Tento způsob zápisu adresy je na internetu standardizován. Obecnější a širší systém identifikace zdrojů URI postupně nahrazuje termín URL.
URI je znakový řetězec, který identifikuje zdroj: dokument, soubor atd. Samozřejmě se to týká internetových zdrojů.

Relativní cesta

Relativní cesty se často používají mnohem častěji než absolutní cesty. Relativní cesta se v zásadě určuje, když potřebujete poslat návštěvníka na jinou stránku vašeho webu nebo vložit objekt (například obrázek) na jednu ze stránek. V tomto případě je použití vzhledem k cestě zcela oprávněné. V závislosti na struktuře webu záleží na tom, jakou formu relativní cesty potřebujete použít. Existují dva typy relativní cesty: cesta relativní k dokumentu, cesta relativní ke kořenu webu.

Cesta vzhledem k dokumentu

Přesně cestu vzhledem k dokumentu se používá nejčastěji. Takové odkazy se také nazývají místní odkazy. V zásadě se tato cesta používá, když jsou aktuální a související dokument (stránka) ve stejném adresáři. Pokud přesunete dokument do jiného adresáře, bude nutné změnit cestu (odkaz). I když můžete také odkazovat na dokumenty (stránky) z jiných adresářů. K tomu je cesta zapsána z aktuálního dokumentu do cílového dokumentu (stránky). V tomto případě musí být cesta vzhledem k dokumentu nastavena v závislosti na adresářové struktuře.
Vezměme si například nejjednodušší strukturu statického webu.

Předpokládejme, že každý obrázek v adresáři obrázky je třeba vložit na příslušné stránky home.html, produkty.html, kontakt.htm l. Chcete-li vložit obrázek například na stránku „home.html“, musíte určit cestu, kde se obrázek nachází. Pokud použijete cestu vzhledem k dokumentu, budete muset do kódu stránky napsat následující:

Tento kód pro vložení obrázku na stránku je neúplný. Protože neobsahuje několik důležitých atributů, jako je šířka, výška atd. Atribut src, zde slouží k označení cesty k souboru. Všechny ostatní atributy jsou zde vynechány, protože nyní nejsou tak důležité. Hlavní věc nyní je, že máte představu o tom, jak vypadá cesta vzhledem k dokumentu.
Při použití cest relativních k dokumentu chybí část absolutní cesty. Část absolutní cesty je zde zkrácena, a to jak pro aktuální dokument (stránku), tak pro odkazovanou. Zde je použita pouze část cesty, která se stále mění.
Ještě jednou připomenu, že při použití cesty relativní k dokumentu je potřeba vzít v úvahu původní umístění souborů.

Představme si situaci, kdy by stránka produkty.html, nebude umístěn v kořenovém adresáři webu (jak tomu bylo v předchozím příkladu), ale v podadresáři. Nyní je potřeba vložit obrázek do souboru produkty.html, který je umístěn hlouběji než kořenový adresář webu.

Pro vložení obrázku do souboru produkty.html musíte se vrátit do kořenového adresáře. Poté můžete použít již známou cestu, která byla zmíněna výše.

Jak můžete vidět z výše uvedeného kódu, do cesty bylo nyní přidáno následující: ../ . Jen tato posloupnost znaků ../ a slouží k posunutí o jeden adresář (úroveň) výše v hierarchii adresářů. Cestu ve výše uvedeném kódu lze číst takto: „Jděte o jeden adresář výše (zpět), přejděte do adresáře obrázky a vezměte si soubor odtud produkty.png«.
Li ../ znamená posunutí o jeden adresář (úroveň) výše v hierarchii adresářů, než symbol / označuje posun o jednu úroveň níže.
Posloupnost znaků ../ lze opakovaně používat na cestách. Pokud například soubor produkty.html přesunout do tří vnořených adresářů, budete muset použít následující kód:

Jak je vidět z předchozích příkladů, použití cesty vzhledem k dokumentu v mnoha případech oprávněné. Tento typ cesty se v praxi často používá a lze jej aplikovat téměř na jakoukoli situaci. Jak jsem řekl výše, existuje také cesta vzhledem ke kořenovému adresáři webu, o kterém bude ve skutečnosti pojednáno níže.

Cesta vzhledem ke kořenu webu

Pravděpodobně jste si již uvědomili, že cesty vztahující se k dokumentu se používají velmi často. Při jejich používání je ale jeden problém. Což znamená, že když se změní struktura adresářů, budou muset být změněny i cesty.
Ale tento problém lze vyřešit použitím cesty vzhledem ke kořenu webu. Kde je určena cesta z kořenového adresáře k dokumentu.
Všechny cesty vzhledem ke kořenu webu začínají znaménkem / . Pouze zde, na rozdíl od cest k dokumentu, se tento znak používá k označení kořenového adresáře. Protože se používá na začátku cesty.
Cesta vzhledem ke kořenu webu umožňuje přesunout některé soubory bez poškození odkazů. Tento typ cesty můžete použít pouze na webovém serveru na internetu nebo na webovém serveru umístěném na místním počítači.

Webový server na místním počítači může být . Což vám umožní vytvořit na vašem počítači prostředí pro tvorbu webových stránek a jejich předběžné testování.

Kořenová relativní cesta neobsahuje ani protokol http ani název domény. A jak jsem již řekl, začíná to uvedením symbolu / , který ukazuje na kořenový adresář. Tento adresář obvykle obsahuje soubor indexu hlavní stránky.

Například, /images/products.png označuje, že soubor produkty.png je ve složce obrázky, který se nachází v kořenovém adresáři.

Nejjednodušší způsob, jak určit relativní cestu ke kořenu, je použít absolutní cestu a zrušit http:// a název hostitele.

Příklad
Někdy je nutné, aby informace na jedné stránce byly použity jinými stránkami na webu. To se často provádí za účelem snížení množství opakovaného kódu na každé stránce. Řekněme, že existuje soubor _contact.html, který obsahuje informace o telefonních číslech, e-mailu a obsahuje obrázek kontakt.png. (Nechť je to malá tabulka, která bude umístěna na každé stránce webu.)

Následující kód je pro vložení obrázku "contact.png".

Kód potřebný k vložení jednoho souboru do jiného přesahuje rozsah tohoto článku. Vše závisí na použitém programovacím jazyce.

Doufám, že již víte, jaký typ cesty byl použit ve výše uvedeném kódu. Pokud ne, podívejte se na výše uvedenou definici cesty relativní k dokumentu.
Nyní, když návštěvník navštíví stránky webu, např home.html, kontakt.ntml, uvidí perfektně vykreslenou stránku. Do každého z nich je vložen soubor _contact.html, do kterého se naopak vkládá obrázek kontakt.png.
Tedy tak, že přejdete např. na stránku home.html, dojde k následujícímu: „Kód hlavní stránky běží home.html. Poté se vloží a provede kód stránky _contact.html. Kód stránky _contact.html, říká, že musíte jít do adresáře obrázky a odtud vezměte obrázek kontakt.png«.
Pokud vynecháte samotný kód pro vložení, vše funguje dobře. Ale pokud spustíte stránku produkty.html, pak dojde k chybě. Protože se kód pokusí najít adresář obrázky a soubor kontakt.png v adresáři produkty. Takový adresář tam ale neexistuje, kde vlastně nastává problém.
Je jasné, že zde nemůžete použít cestu relativní k dokumentu.
Samozřejmě zde můžete použít absolutní cestu. O výhodách a nevýhodách tohoto přístupu jsem hovořil výše.
Obecně řečeno, toto je jedna ze situací, kdy byste měli použít cestu vzhledem ke kořenu webu. Při použití cesty relativní ke kořenu webu bude odkaz vždy začínat z kořenového adresáře (kořen webu). Tento typ cesty vám umožní pomocí kódu vložit například obrázek, bez ohledu na hierarchii webu a jeho adresářů.
Použití cesty vzhledem ke kořenu webu ve výše uvedeném příkladu zabrání problémům s vkládáním obrázku. Protože bez ohledu na to, kde je tento typ cesty použit, vždy najde soubor v něm uvedený.
Cesta vzhledem ke kořenu webu je velmi podobná cestě relativní k dokumentu. Chcete-li vytvořit cestu vzhledem ke kořenu webu, musíte přidat symbol / na začátek cesty.

Nyní bude obrázek správně vložen na jakoukoli stránku webu.

Doufám, že jsem vám trochu pomohl pochopit, jaké cesty existují a kdy a kde se používají. Nyní můžete použít všechny typy cest pro jejich zamýšlený účel.

V tomto tutoriálu začátečníkům vysvětlíme, co je absolutní a relativní cesta k souboru a také v jakém případě je lepší použít. Pokud jste již s tímto tématem obeznámeni, můžete přejít k další lekci.

Začněme tedy definicí samotného pojmu „cesta“:

Cesta (anglicky path) - sada znaků ukazující umístění souboru v systému souborů, adresu adresáře.

Wikipedie

Pokud mluvíme o webech, pak je cesta stejná jako odkaz. Odkazy mohou být absolutní nebo relativní. Podívejme se na obě možnosti podrobněji.

Co je absolutní cesta k souboru

https://www.google.com/images/branding/googlelogo.png

V CSS lze použít absolutní cestu. Chcete-li například nastavit obrázek jako pozadí, můžete vzít absolutní adresu URL souboru obrázku A zadat ji v šabloně stylů:

Obrázek na pozadí: url(http://www.example.com/img/bg.png);

Co je relativní cesta k souboru

S relativní adresou je vše mnohem zajímavější – lze ji počítat jak z kořene webu, tak z aktuálního dokumentu. Kořenová relativní cesta- toto je cesta, která označuje umístění souboru vzhledem ke kořenovému adresáři webu. V tomto případě adresa neobsahuje protokol ani název domény a začíná lomítkem / , které označuje kořenovou složku. Tato adresa vypadá takto:

Obrázek na pozadí: url(/img/bg.png);

Jak snadno určit kořenovou relativní adresu? Stačí vzít absolutní odkaz a odstranit z něj protokol a název domény, ponechat lomítko a všechny znaky, které následují za ním.

Relativní cesta k souboru z dokumentu je cesta k souboru vzhledem k aktuálnímu dokumentu. Tato adresa závisí na umístění souboru, ve kterém je zapsána. Když je tedy v šabloně stylů zadán relativní odkaz, vypočítá cestu k souboru na základě šablony stylů, nikoli podle aktuální webové stránky nebo kořenové složky. Uveďme si pár příkladů.

Příklad I

Pokud jsou naše šablona stylů style.css a soubor obrázku na pozadí bg.png ve stejné složce (ne nutně kořenové), bude relativní cesta z tabulky k obrázku vypadat takto:

Obrázek na pozadí: url(bg.png); /* stačí napsat název souboru */

Příklad II

Pokud je šablona stylů v kořenovém adresáři a obrázek je ve složce img, bude relativní odkaz vypadat takto:

Obrázek na pozadí: url(img/bg.png); /* není potřeba úvodní lomítko */

Příklad III

Pokud je šablona stylů ve složce a obrázek sousedí s touto složkou, bude relativní cesta vypadat takto:

Obrázek na pozadí: url(../bg.png); /* dvě tečky – přechod o úroveň výš */

Příklad IV

Pokud je šablona stylů ve dvou složkách a obrázek sousedí s první složkou, pak bude relativní cesta následující:

Obrázek na pozadí: url(../../bg.png); /* přejít o dvě úrovně nahoru */

Dvě tečky a lomítko na začátku relativní cesty znamenají přechod o jednu úroveň nahoru. V závislosti na počtu úrovní (adresářů), do kterých se potřebujete vyšplhat, je potřeba zadat požadovaný počet teček s lomítky. Pokud se například šablona stylů nenachází ve dvou, ale ve čtyřech složkách, záznam bude vypadat následovně:

Obrázek na pozadí: url(../../../../bg.png);

V případě, že je obrázek skrytý ve složce img a šablona stylů je skrytá ve složce css, budete muset opustit složku css a přejít do složky img. Takhle:

Obrázek na pozadí: url(../img/bg.png);

Pokud existuje několik složek, musíte je také zaregistrovat. Změňme předchozí příklad: představte si, že ve složce img je další složka pozadí, která obsahuje náš výkres. Relativní cesta by vypadala takto:

Obrázek na pozadí: url(../img/backgrounds/bg.png);

Který způsob je lepší použít

Absolutní adresa odkazu Budete jej muset použít, pokud je soubor, na který odkazujete, na jiném webu. V rámci jednoho webu se absolutní cesta prakticky nepoužívá (i když bude fungovat). Je to způsobeno několika body: za prvé, takové odkazy mohou být velmi těžkopádné a za druhé, pokud se změní název domény, nastane problém - všechny odkazy povedou na starou doménu, což může vést k mnoha chybám a nefunkčním odkazům.

Kořenová relativní cesta bude fungovat na webovém serveru, ale při vývoji na lokálním počítači je k ničemu. Ale výhodou tohoto typu odkazu je, že můžete přesunout svou šablonu stylů do libovolné složky na webu a nemusíte se bát, že se adresy URL obrázků na pozadí poškodí.

Relativní cesta z dokumentu- nejlepší volba pro vývoj webu na lokálním počítači bez použití serveru. V prohlížeči budete moci normálně prohlížet webové stránky uložené v počítači a adresy souborů budou fungovat. Budou fungovat na živém webu, ale s jednou podmínkou – pokud nepřesunete šablonu stylů na jiné místo (jinak budete muset upravit cesty).

Zkuste si procvičit používání relativních cest na místním počítači i na webovém serveru. Pochopení toho, jak to funguje, se vám jistě bude hodit v každém projektu.

Dále v tutoriálu: vlastnost background-repeat - řídí opakování obrázku na pozadí.

Jakákoli webová stránka, obrázek, video atd. je především soubor, který má svůj vlastní absolutní nebo relativní cesta (adresa). Samotný soubor na internetu je umístěn na počítači tzv server. Proto byste měli zvážit, jak je soubor prezentován na serveru a na internetu. V tomto článku bych rád objasnil výše uvedené body a objasnil nastolený problém. Zkusíme to?

Absolutní cesta (adresa)

Co je absolutní cesta k souboru?

Absolutní cesta nebo adresa je úplná cesta nebo adresa ve vztahu k domovskou složku na serveru nebo Název internetové domény.

říká " domovská složka„Mám na mysli začátek prostoru přiděleného poskytovatelem hostingu. Například, pokud mluvíme o lokálním serveru v operačním systému Windows, bude samotný disk fungovat jako domovská složka, tedy C:/. Často přitom poskytovatel hostingu přiděluje uživateli pouze určitý virtuální (podmíněný) prostor, pro který jako domovská složka funguje určitá složka, často nazývaná /home.

říká " název domény„Mám na mysli adresu URL, která začíná zmínkou o protokolu, například: http://sitename.ru/. Na internetu je to domovská složka pro každý z prezentovaných zdrojů.

Jak zjistit absolutní cestu na serveru v PHP?

Pokud je vše víceméně jasné s URL adresou, pak s domovskou složkou na serveru je situace poněkud složitější. Nakonec má každý poskytovatel své vlastní problémy a to je třeba vzít v úvahu.

Začnu tím, že absolutní cesta na serveru je obvykle určena vzhledem k umístění skriptu, ve kterém se to děje. Například soubor config.php se nachází v kořenové složce webu a potřebujeme k němu zjistit absolutní cestu.

Dovolte mi to objasnit slovy „ kořenová složka„Mám na mysli složku na serveru vyhrazenou pro daný web. To je to, co slouží jako výchozí bod adresy URL ve vztahu k názvu domény.

K tomu můžete použít konstantu __FILE__, která obsahuje úplnou cestu a název aktuálního souboru, ve kterém je volána. Chcete-li získat pouze úplnou cestu a odstranit název aktuálního souboru, můžete použít funkci dirname(), která vrátí nadřazený adresář zadané cesty. Například:

$abspath = dirname(__FILE__) ."/";

V PHP 5.3 a novějších již můžete použít konstantu __DIR__:

$abspath = __DIR__

Je tedy velmi vhodné v budoucnu zařadit soubor config.php a jako výchozí bod použít v něm získanou absolutní cestu proměnné $abspath. Předpokládejme například, že skript test.php je umístěn ve složce: cesta/ - a požadovaný soubor data.txt je ve složce: data/. V tomto případě může hovor vypadat takto:

Include_once("../config.php"); $fh = fopen($abspath ."/2013/12/data/data.txt", "r");

Vezměte prosím na vědomí, že jsem připojil soubor config.php pomocí relativní cesty, ale o tom později.

Relativní cesta (adresa)

Co je relativní cesta k souboru?

Relativní cesta nebo adresa je cesta nebo adresa vzhledem k umístění souboru, ve kterém je přístup k jinému souboru.

Jakýkoli souborový systém je přísná hierarchie nadřazených a podřízených složek a souborů. Například: C:\složka\soubor.php – zde je složka\ složka podřízená disku C:\ a rodič souboru soubor.php.

Pro srozumitelnost se podívejme na následující hierarchii:

  • soubor1.php
  • složka\
    • soubor.php
    • podsložka\
      • soubor3.php

Abychom mohli přistupovat k souboru C:\soubor2.php ze souboru C:\složka\soubor.php, musíme opustit aktuální složku složky\, tzn. jít o úroveň výš. K tomu můžete použít, složku (Dokonce bych řekl pseudosložka) nadřazený adresář, představující dvě tečky (..) . Jinými slovy, dostaneme cestu: ..\soubor2.php - relativní k souboru soubor.php .

Abychom se dostali k souboru C:\složka\podsložka\soubor3.php ze souboru C:\složka\soubor.php, musíme zadat podsložku\ podsložku, tzn. jít o úroveň níže. Dostaneme tedy cestu: podsložka\soubor3.php - relativní k souboru soubor.php .

Udělejme věci složitější a přejděte ze souboru C:\složka\podsložka\soubor3.php do souboru C:\soubor2.php . Relativní cesta bude vypadat takto: ..\..\file2.php - postoupili jsme o dvě úrovně výše. Udělejte to naopak, tedy ze souboru C:\soubor2.php přejdeme do souboru C:\složka\podsložka\soubor3.php. Relativní cesta bude vypadat takto: složka\podsložka\soubor3.php - půjdeme o dvě úrovně dolů.

Výhody a nevýhody relativní cesty (adresy)

Je zřejmé, že relativní cesta neobsahuje domovskou složku a nadřazené složky. Konečná adresa je tedy kratší. Navíc, pokud potřebujete přejít z jedné domény na druhou, nebude potřeba registrovat novou absolutní adresu.

Na druhou stranu, pokud citujeme obsah webu na jiném zdroji se stejnými obrázky, ve kterých je uvedena relativní cesta, dostaneme chybu, protože Na prostředku třetí strany nejsou žádné složky a soubory webu. K tomu dojde, pokud je stránka zobrazena v mezipaměti vyhledávače. Opět platí, že použití relativní cesty může snadno udělat chybu, což bude mít za následek problém s indexováním webu.

Abychom to shrnuli, je třeba poznamenat, že je vhodné minimalizovat použití relativních cest nebo adres a používat absolutní cesty a adresy.

Závěr

Ve svém článku jsem se pokusil zvážit zásadní problém týkající se absolutních a relativních cest (adres) k souborům a složkám. Ve skutečnosti, pokud pracujete na počítači, pak a priori již máte představu o systému souborů, ale bez zohlednění některých nuancí je docela obtížné dostat se ze země a upozornit na řadu problémů, které se nevyhnutelně týkají správné adresování. To je vše, co mám. děkuji za pozornost. Hodně štěstí!

v 8:00 Upravit zprávu 5 komentářů



Nahoru