Care este calea absolută către un fișier. Calea absolută în PHP. Căi relative în CSS

Chiar și drăguță dezvoltatori experimentați adesea confundat cu căile absolute în CSS.

Drumuri absolute

Absolutul este ușor. Ele funcționează la fel atât în ​​CSS, cât și în HTML..jpg va indica http://website/img/miimage.jpg indiferent de pagina pe care utilizatorul o are deschisă.

Căi relative în HTML

Căile relative, dacă nu există nicio etichetă de bază pe pagină, sunt relative la calea paginii curente..zip">test va indica http://website/blog/post/test.zip .

< head > < base href = " http://сайт/ " /> < body > < a href = " test.zip " >Test

Căi relative în CSS

LA relativă CSS calea nu se măsoară de la calea paginii, ci de la calea către CSS-ul însuși.

De exemplu, pentru fișierul http://site/css/test.css

body ( fundal: url (" test . png ") ; )

browserul va încerca să încarce imaginea la http://website/css/test.png .

Comentarii RSS

    Este ciudat că acești „dezvoltatori începători” nu citesc niciodată documentația și încearcă să-și dea seama singuri înainte de a întreba. Sper că majoritatea dintre ei măcar să întrebe mai întâi motoarele de căutare.

    Uneori, pur și simplu primesc aceleași întrebări. Am o secțiune despre programare pe un singur forum, așa că majoritatea noilor veniți (cred că cel puțin 60-80%) nu încearcă să-și scrie programele în Pascal înainte de a se urca pe forum. Aparent, acești oameni nu au încercat niciodată să gândească singuri. Și ar fi bine dacă ar întreba despre unele cazuri speciale, pentru că cer chiar implementări de algoritmi populari, cum ar fi găsirea celui mai mare divizor comun.

    Dar este nevoie și de astfel de oameni, altfel, pe al căror fundal ar arăta bine profesioniștii? ;)

    Aș vrea să scriu și despre / scrie, deoarece se scrie despre astfel de elemente de bază.

    Care este mai bine să folosiți: eticheta de bază sau link-uri absolute (cu gazda site-ului)?. IE, de exemplu, adaugă conținutul etichetei de bază la linkul de ancorare (#foo este vechiul http://site.com#foo).

    Extazi, deci este la fel ca și fără ./ . Sau era vorba de tot felul de...?

    Costeg, depinde de situatie.

    Despre tot felul..

    Simplu și clar, poate continuând subiectul, faceți câteva postări „cum să faceți căi în PHP folosind matrice globală"

    Știu din experiență că este mai bine să prescrii baza. În caz contrar, pot începe dansurile cu browsere.

    Ei bine, experimentele mele au arătat că eticheta afectează numai linkurile din formular ./index.htmlși index.html. Dar /index.html duce la rădăcina site-ului care este setată prin alte metode...

    Nu vreau să vorbesc urât despre oamenii inteligenți care vorbesc urât despre nou-veniți. Dar, în ciuda tonelor de plâns, rămâne o întrebare (și probabil că el este cel care îi îngrijorează pe toți nou-veniți). Este posibil să setați calea pentru aceeași imagine dacă pagina și imaginea sunt în foldere diferite. Acestea. este nevoie de o cale absolută și nu are rost să o folosești, deoarece toate acestea sunt bune în localhost. Dar, pe de altă parte, există o nevoie urgentă de a-l vizualiza pe un alt computer, iar localhost este deja diferit. Tragi toată această povară insuportabilă pe o unitate flash într-un buzunar atârnat de încărcătură, dar în cele din urmă nu poți vedea o singură imagine, nici o altă pagină decât cea de început. Noul venit se uită cu ochii, spunând cum se face că nu am dormit de săptămâni, dar unde este? Dar numai pe propriul computer, sau aruncați toate paginile într-un singur folder, chiar dacă agra / cantitatea lor - așa că se dovedește? Sau mai există o cale?

    incepator, calea absolută nu trebuie să fie un nume de gazdă. Este suficient să o începi cu / .

    Creez o înregistrare.În fișierul index.php, un link către înregistrare Înregistrare Dar pe site când dai clic pe Înregistrare site-ul nu vede fisierul si nu afiseaza formularele Am incercat Inregistrare Inregistrare Calea fisierului trece prin urmatoarele fisiere de pe server domains/stroy-master.in.ua/public_html/wp-content/themes/stroy-master/

Articolul conține fragmente de cod. Versiunea completaîl puteți obține aici - https://bitbucket.org/okiseleva/html-and-css-learn/src. Foldere - „absolute_path_lvl_1” și toate subfolderele.

Calea poate fi absolută sau relativă.

Calea absolută

O cale absolută este calea de la folderul rădăcină la fișier.

Calea constă din toate folderele pe care trebuie să le vedem, separate prin bare oblice. Să ne uităm la un exemplu:

/absolute_path_lvl_1/level_2.1/level_3.1/Kevin.png

Calea absolută către fișier

Calea relativă

O cale relativă este un link care indică alte pagini de pe site-ul dvs. în raport cu pagina web pe care se află deja linkul.

Dacă coborâm în foldere, partajăm și prin „/”. Dacă trebuie să urcați un nivel, scrieți „..”

1. Cel mai simplu exemplu de cale relativă este doar un nume de fișier. dacă fișierul este în apropiere, trebuie doar să specificați numele acestuia

Bună ziua.png

Cale relativă, fișier în apropiere


2. Ne ridicăm la dosarul de mai sus

../Kevin_lvl_2.png

Calea relativă 2

3. Un exemplu mai complicat, de la Diff_paths.html la poza cu Kevin

../level_2.1/level_3.1/Kevin.png

Calea relativă 3


Care este diferența dintre căile absolute și relative

E foarte simplu. Dacă calea este specificată de la rădăcina sistemului, atunci această cale este absolută. Cum este adresa postalaîn viata reala Oriunde ai veni, dar adresa exacta veți găsi întotdeauna exact locul potrivit.

Dacă rădăcina nu este specificată la începutul căii, atunci această cale va fi relativă și va fi construită din poziția curentă. În viața reală, acesta este ca drumul către magazinul de băuturi - „două străzi la stânga și acolo tot timpul drept înainte”. Această cale poate fi atinsă doar dintr-un anumit punct. Din cealaltă vei ajunge într-un loc complet diferit.

În dosar absolute_path_lvl_1/level_2.2/Diff_paths.html poti vedea un exemplu Pagini HTML cu căi de fișiere diferite.

Iată un exemplu de cale absolută și relativă pentru același fișier cu Kevin.


D:/hgprojects → aici am descărcat proiectul „html-and-css-learn”. S-ar putea să ai o altă cale


PS - mai multe detalii în carte "

LA această lecție vom explica începătorilor ce este o cale absolută și relativă către un fișier, precum și în ce caz care este mai bine să o folosiți. Dacă sunteți deja familiarizat cu acest subiect, puteți trece la următoarea lecție.

Deci, să începem cu definiția termenului „cale” în sine:

Cale (cale engleză) - un set de caractere care arată locația fișierului în sistemul de fișiere, adresa directorului.

Wikipedia

Dacă vorbim despre site-uri, atunci calea este aceeași cu linkul. Legăturile pot fi absolute sau relative. Să luăm în considerare ambele opțiuni mai detaliat.

Care este calea absolută către un fișier

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

O cale absolută poate fi utilizată în CSS. De exemplu, pentru a seta o imagine ca fundal, puteți lua adresa URL absolută a fișierului imagine ȘI o puteți specifica în foaia de stil:

Imagine de fundal: url(http://www.example.com/img/bg.png);

Ce este o cale relativă a fișierului

Cu o adresă relativă, totul este mult mai interesant - poate fi numărat atât din rădăcina site-ului, cât și din documentul curent. Cale relativă rădăcină este o cale care indică locația fișierului în raport cu directorul rădăcină al site-ului. În acest caz, adresa nu conține nici un protocol, nici un nume de domeniu și începe cu o bară oblică / , care indică folderul rădăcină. Această adresă arată astfel:

Imagine de fundal: url(/img/bg.png);

Cum să determinați cu ușurință adresa relativă a rădăcinii? Doar luați o legătură absolută și eliminați protocolul și numele de domeniu din el, lăsând bara oblică și toate caracterele care urmează.

Cale relativă a fișierului din document este calea către fișier în raport cu documentul curent. O astfel de adresă depinde de locația fișierului în care este scrisă. Astfel, atunci când o legătură relativă este specificată într-o foaie de stil, aceasta calculează calea fișierului din foaia de stil, nu din pagina web curentă sau folderul rădăcină. Să dăm câteva exemple.

Exemplul I

Dacă foaia noastră de stil style.css și fișier cu model de fundal bg.png sunt în același folder (nu neapărat rădăcină), atunci calea relativă de la tabel la imagine va arăta astfel:

Imagine de fundal: url(bg.png); /* scrii doar numele fișierului */

Exemplul II

Dacă foaia de stil este în rădăcină și imaginea este în folderul img, linkul relativ ar fi:

Imagine de fundal: url(img/bg.png); /* bara oblică la început nu este necesară */

Exemplul III

Dacă foaia de stil este într-un folder, iar imaginea este adiacentă acestui folder, atunci calea relativă va fi:

Imagine de fundal: url(../bg.png); /* două puncte - urcă un nivel */

Exemplul IV

Dacă foaia de stil este situată în două foldere, iar imaginea este adiacentă primului folder, atunci calea relativă va fi următoarea:

Imagine de fundal: url(../../bg.png); /* urcă două niveluri */

Două puncte și o bară oblică la începutul unei căi relative înseamnă a urca un nivel. În funcție de numărul de niveluri (directoare) pe care trebuie să le urcați, trebuie să scrieți numărul necesar de puncte cu o bară oblică. De exemplu, dacă foaia de stil nu este în două, ci în patru foldere, intrarea, respectiv, va fi după cum urmează:

Imagine de fundal: url(../../../../bg.png);

Dacă imaginea este ascunsă în folderul img și foaia de stil este în folderul css, va trebui să părăsiți folderul css și să mergeți la folderul img. Ca aceasta:

Imagine de fundal: url(../img/bg.png);

Dacă există mai multe foldere, trebuie și să le înregistrați. Să schimbăm exemplul anterior: imaginați-vă că în folderul img există un alt folder de fundaluri, care conține imaginea noastră. Calea relativă ar fi:

Imagine de fundal: url(../img/backgrounds/bg.png);

Care este mai bine să folosiți

Adresă de link absolută va trebui utilizat dacă fișierul la care faceți legătura se află pe alt site. În cadrul aceluiași site, calea absolută nu este practic utilizată (deși va funcționa). Acest lucru se datorează mai multor puncte: în primul rând, astfel de legături pot fi foarte greoaie și, în al doilea rând, dacă numele de domeniu se schimbă, atunci va apărea o problemă - toate legăturile vor duce la vechiul domeniu, ceea ce poate duce la multe erori și legături rupte. .

Cale relativă rădăcină va funcționa pe un server web, dar este inutil când se dezvoltă calculator local. Dar avantajul acestui tip de link-uri este ca iti poti muta foaia de stil in orice folder de pe site si sa nu te sperii ca adresele imagini de fundal devin inoperante.

Cale relativă din document - cea mai bună opțiune când faceți dezvoltare web pe o mașină locală fără a utiliza un server. Într-un browser, veți putea vizualiza paginile web stocate pe computer în mod normal, iar adresele fișierelor vor funcționa. Vor funcționa și pe un site live, dar cu o condiție - dacă nu mutați foaia de stil în alt loc (altfel va trebui să ajustați căile).

Încercați să exersați utilizarea căilor relative atât pe mașina dvs. locală, cât și pe serverul web. Înțelegerea modului în care funcționează va fi cu siguranță utilă în orice proiect.

Mai departe în tutorial: proprietatea background-repeat controlează repetarea imaginii de fundal.

Toate link-uri HTMLîmpărțite în externe și interne. Legăturile externe sunt link-uri care duc de la un site la un alt site sau la un fișier aflat pe alt site. Link-uri interne- sunt link-uri care fac legatura de la o pagina a site-ului la o alta pagina a aceluiasi site sau la sectiuni ale aceleiasi pagini.

Toate linkuri externeîn atributul href al etichetei conțin calea absolută către documentul la care se referă. Legăturile interne, la rândul lor, pot conține atât o cale absolută, cât și o cale relativă (în acest caz depinde de preferințele tale personale).

Toate legăturile pot fi, de asemenea, împărțite condiționat în relative și absolute. Legături relative sunt link-uri HTML care conțin căi relative, legături relative poate fi doar intern. Legături absolute sunt legături care conțin căi absolute, legăturile absolute pot fi atât externe, cât și interne.

Calea relativă

Calea relativăînseamnă că specificarea căii către fișierul sau pagina dorită a site-ului dvs. începe relativ la directorul în care se află pagina cu linkul sau relativ la directorul rădăcină al site-ului. Luați în considerare părțile din care poate consta o cale relativă:

Părți de drum Descriere Exemple de valori
Nume de fișier Dacă specificați doar numele fișierului ca valoare a atributului, aceasta înseamnă că fișierul necesar se află în același folder cu pagina cu linkul. „page.html”
catalog/ Dacă fișierul la care trebuie să specificați calea se află într-un director copil în raport cu fișierul cu o legătură, aceasta înseamnă că trebuie să coborâm un nivel (la folderul copil al directorului curent), în acest caz, calea începe cu numele directorului copil, după care numele este indicat printr-o bară oblică „/”, servește la separarea părților căii, după care este indicat numele fișierului de care avem nevoie.

Notă: Puteți merge în jos doar în câte foldere le-ați creat. De exemplu, dacă ați creat un folder la 10 niveluri sub rădăcină, puteți specifica o cale care vă va duce în jos 10 foldere. Cu toate acestea, dacă aveți atât de multe niveluri, cel mai probabil înseamnă că organizarea site-ului dvs. este inutil de incomodă.

" directory/page.html "

" directory1/directory2/page.html "

../ Dacă trebuie să indicați că fișierul la care vă referiți se află în folderul părinte, utilizați simbolurile .. (două puncte), acestea înseamnă să urcați un nivel (până la folderul părinte al directorului curent). Apoi, specificăm o bară oblică „/” pentru a separa părțile căii și a scrie numele fișierului nostru.

Notă: simbolurile .. pot fi folosite de câte ori doriți la rând, folosindu-le, urcați câte un folder de fiecare dată. Cu toate acestea, puteți urca până când ajungeți la folderul rădăcină al site-ului dvs. Nu puteți merge mai sus decât acest folder.

„../page.html”

„../../page.html”

" ../../../cat1/cat2/page.html " - urcăm din folderul curent trei directoare de mai sus și deja coborâm două niveluri până la fișierul necesar

/ O cale relativă nu trebuie să înceapă întotdeauna în raport cu locația curentă a paginii de legătură, ea poate începe și în raport cu directorul rădăcină al site-ului. De exemplu, dacă fișierul dorit se află în directorul rădăcină, calea poate începe cu caracterul „/”, după care trebuie doar să specificați numele fișierul dorit, care se află în directorul rădăcină.

Notă: când caracterul " / " este specificat primul, înseamnă că calea începe din directorul rădăcină.

„/page.html”

„/cat1/cat2/car.png”

Calea absolută

O cale absolută este de obicei folosită pentru a specifica calea către un fișier care se află pe o altă resursă de rețea. Este adresa URL completă a unui fișier sau a unei pagini. În primul rând, protocolul folosit este indicat în adresă, urmat de numele domeniului (numele site-ului). De exemplu: http://www.example.ru - așa arată calea absolută către un anumit site web. http:// este un protocol de transfer de date, iar www.example.ru este numele site-ului (domeniul).

O cale absolută poate fi folosită și pe propriul site. Cu toate acestea, în cadrul unui site, se recomandă utilizarea unei căi relative ca valoare de legătură.

Acum să ne uităm la ce este URL-abordare. Fiecare pagină web de pe Internet are propria sa adresă unică, care este ceea ce se numește URL. Abreviere URL reprezintă U uniformă R resursă L ocator (Uniform Resource Address), pur și simplu, un URL este un localizator de resurse. Acest mod de a scrie o adresă este standardizat pe Internet.

Drumuri absolute


În acest caz, totul este foarte simplu, specificăm o cale directă către un fișier situat pe un alt domeniu. Este posibil să specificați o cale abreviată prin utilizarea a două bare oblice la început fără a specifica în mod explicit http sau https, iar serverul însuși va înlocui protocolul (extensia) dorit în funcție de setările serverului. Este important de reținut că această specie este necesar pentru a naviga între site-uri:
http://google.com

În ceea ce privește rădăcina site-ului


În acest caz, browserul preia domeniul site-ului și înlocuiește linkul specificat către acesta. În acest caz va fi http://website/css/style.css.În cazul http, https nu trebuie să fie aburit, deoarece va fi luat în forma în care pagina este deschisă în prezent, adică cu http va fi http. De asemenea, este foarte convenabil pentru a transfera unele funcționalități între diferite site-uri sau pentru a transfera un site de la un domeniu la altul fără a atinge codul. Modul preferat de a specifica căile către pagini și fișiere.

Despre această pagină


O metodă mai puțin populară, deoarece preia pagina curentă și adaugă o nouă adresă la calea acesteia..com/trick/css/style.css . Practic imposibil de utilizat în cazurile în care folosim CNC.

Folosind eticheta de bază


În acest caz, în locul substituției standard de domeniu, calea de la bază va fi înlocuită cu calea relativă. Adică vom primi un fișier localizat:
http://website/tricks/css/style.css

Căi relative și absolute în PHP

Totul este foarte simplu, lucrând în sistemul de fișiere, vom respecta regulile de lucru cu căile în PHP. Dacă transmitem comanda browserului client, atunci căile HTML sunt folosite aici. Adică, în exemplul următor, din PHP trecem calea către browser cu pagina la care trebuie să ajungă. Faptul că browserul a făcut tranziția între pagini poate fi văzut în bara de adresa:
header("Locație: /page2.php");
În total, deschidem pagina page1.php, iar pagina2.php este scrisă în bara de adrese, iar ideea este că browserul a încărcat ÎNTÂI pagina page1.php, apoi a primit informații cu o redirecționare și A ÎNCERCAT a doua pagină pagina2.php. În acest caz, redirecționarea a fost pe partea clientului (browserului), ceea ce înseamnă că folosim regulile legate de HTML (adresa web).

Calea absolută în PHP

O cale absolută în PHP este tratată ca o cale absolută din directorul în care este instalat serverul web. Această cale poate fi obtinut de la:
$_SERVER[„DOCUMENT_ROOT”]
Dacă luăm ca exemplu acest server, atunci calea lui este: /home/school/public_html/schoolphp , deci pentru a specifica calea plină la fotografia „/photo/img1.jpg”, trebuie să specificați următoarea cale:
getimagesize("/home/school/public_html/schoolphp/photo/img1.jpg"); getimagesize($_SERVER["DOCUMENT_ROOT"]."/photo/img1.jpg");
Vreau să remarc că site-ul poate fi localizat într-un subdirector, adică pentru:
http://site/forum/
poate fi extrem de dificil să folosești DOCUMENT_ROOT, deoarece forumul (ca script extern) nu știe încă unde va fi plasat pe site. Există mai multe moduri de a rezolva această problemă, haideți să enumeram câteva:

1) Creați o pagină ca subdomeniu.

2) Scrieți calea absolută în config în config.php , adică:
Core::$ROOT = $_SERVER[„DOCUMENT_ROOT”]; getimagesize(Core::$ROOT."/photo/img1.jpg"); // folosește o cale absolută care poate fi modificată
Acum puteți conecta întregul site la Core::$ROOT fără remușcări și dacă la întâmplare este necesar să schimbați calea către fișierul inclus, apoi puteți suprascrie valoarea Core::$ROOT;

În ceea ce privește fișierul de pornire (bază)

În multe sisteme index.php există un singur punct de intrare, adică index.php este deschis și alte fișiere sunt conectate de la acesta.
includ „./modules/allpages.php”;
În acest caz, allpages.php va fi inclus de-a lungul căii: /home/school/public_html/schoolphp/modules/allpages.php . Aceasta metoda Este convenabil pentru că dacă scrieți include în fișierul allpages.php: include „./modules/module/page.php”;, atunci se va căuta oricum în raport cu punctul de intrare și anume index.php:
/home/school/public_html/schoolphp/modules/module/page.php
O implementare destul de convenabilă de luat în considerare că știm clar structura aplicației noastre în raport cu rădăcina index.php. Chiar dacă numim orice alt fișier, nu index.php, căile vor funcționa exact în același mod. Am numit dir.php , ceea ce înseamnă că în raport cu fișierul dir.php, căile vor fi luate!

Ce altceva trebuie să știi

Nu m-am putut abține să le amintesc celor care au uitat sau să le sugerez celor care nu știu că puteți merge înapoi nu numai adânc în directoare, ci și în sus (dosare înapoi), iar sintaxa lor este destul de simplă:
include „../file.php”;
În acest caz, directorul acestui fișier sau rădăcina index.php va fi luat și returnat 1 folder înapoi, fișierul „fișier.php” va fi căutat și acolo.

DOCUMENT_ROOT nu este singura opțiune pentru a obține calea rădăcină a site-ului. Să aruncăm o privire la manual: „Directorul rădăcină al documentului în care este executat scriptul curent este exact cel listat în Fișier de configurare server." . Aceasta înseamnă că în cazurile în care calea este scrisă incorect în fișierul de configurare, întregul site nu va funcționa. Ce să faceți? Puteți scrie administratorilor și proprietarilor găzduirii serverului cu speranța că aceștia le vor corecta deficiențele. Sau căutați o alternativă stabilă care este __DIR__ , aceasta este calea absolută către fisierul dat unde codul rulează fișierul. Să presupunem că avem un fișier de configurare în folderul de configurare și, astfel încât folosind __DIR__ să nu revenim de fiecare dată când 1 folder în sus scriind __DIR__ „/../” să putem scrie în siguranță __DIR__ în variabila noastră, am scris exemplul de mai jos în proprietatea clasei (lecția nr. 24, cine nu a ajuns, folosește variabila obișnuită):
Core::$ROOT = __DIR__; // Sau pentru PHP vechi - dirname(__FILE__);
De asemenea, am vrut să vă reamintesc ceva interesant și important. Conform securității, serverul web interzice deplasarea prin directoare deasupra rădăcinii site-ului. Adică site-ul se află pe următoarea cale: /home/school/public_html/schoolphp , dar citirea conținutului folderelor /home sau /home/school nu va fi disponibilă.

PHP poate folosi căi HTML? Da, in funcții speciale, de exemplu:
file_get_contets("http://site");

Practică

În vechile mele proiecte am folosit DOCUMENT_ROOT, acum am trecut la căile relative index.php „./folder/file”.

Zend2, produs de la Dezvoltatori PHP, unul dintre cele mai complexe FrameWork de pe acest moment folosește, de asemenea, căi relative cu o sintaxă diferită de a mea, adică „dosar/fișier”.

Forumul IPB.3 folosește dirname(__FILE__).

Concluzii:

1) În HTML, folosim căi relativ la rădăcina site-ului, și anume „/file.php” (linia începe cu bară oblică).
2) în PHP folosim relativ fișier rădăcină„./file.php” (linia începe cu puncte și bare oblice), o alternativă ar fi folosirea unei proprietăți inițializate la rădăcină: __DIR__;
3) Redirecționarea antetului folosește căi din HTML. PHP lucrează cu Sistemul de fișiere(conectarea fișierelor, salvarea și editarea imaginilor) - cu căi PHP.
  • Serghei Savenkov

    un fel de recenzie „rare”... parcă s-ar grăbi undeva