Calea relativă la fișierul Windows. Legături absolute și relative

Adresa linkului poate fi absolută sau relativă. Adresele absolute trebuie să înceapă cu protocolul (de obicei http://) și să conțină numele site-ului. Legăturile relative se bazează pe rădăcina site-ului sau a documentului curent.

Exemplul 8.2 arată cum să creați un link absolut către un alt site.

Exemplul 8.2. Folosind referințe absolute

Adresă absolută

Învățarea HTML



Când specificați directorul site-ului ca link (de exemplu, http://site/css/), acesta se afișează fișier index. Acesta este fișierul care este încărcat implicit atunci când accesați un director fără a specifica în mod explicit numele fișierului. De obicei, fișierul index este un document numit index.html.

Legăturile absolute sunt de obicei folosite pentru a indica un document pe o altă resursă de rețea, cu toate acestea, este, de asemenea, posibil să se creeze legături absolute în cadrul site-ului curent. Cu toate acestea, acest lucru nu este des practicat, deoarece astfel de legături sunt destul de lungi și greoaie. Prin urmare, link-urile relative sunt utilizate predominant în cadrul site-ului.

Link-uri referitoare la documentul curent

Când creați legături relative, trebuie să înțelegeți ce valoare ar trebui să specificați pentru atributul href, deoarece aceasta depinde de locația inițială a fișierelor. Să ne uităm la câteva opțiuni tipice.

1. Fișierele se află într-un singur folder (Fig. 8.4).

Acest nume de fișier este luat doar ca eșantion pe site, caracterele rusești cu spații nu ar trebui să fie folosite în numele fișierelor și chiar în cazuri diferite.

2. Fișierele sunt localizate în foldere diferite(Fig. 8.5).

Când document original este stocat într-un singur folder, iar linkul este în rădăcina site-ului, apoi înainte de numele fișierului din adresa linkului ar trebui să puneți două puncte și o bară oblică (/), așa cum se arată mai jos.

Două puncte în acest caz înseamnă ieșire dosarul curent cu un nivel mai sus.

3. Fișierele sunt plasate în foldere diferite (Fig. 8.6).

Acum dosarul original se află în două subfoldere și, pentru a vă conecta la documentul din rădăcina site-ului, trebuie să repetați exemplul anterior de două ori.

Legătură

Situația este similară cu orice număr de subdosare.

4. Fișierele sunt plasate în foldere diferite (Fig. 8.7).

Acum situația se schimbă, fișierul sursă se află în rădăcina site-ului, iar fișierul la care trebuie să vă conectați se află în folder. În acest caz, calea către fișier va fi următoarea.

Legătură

Rețineți că nu există puncte suplimentare sau bare oblice înainte de numele folderului. Dacă fișierul se află în nu unul, ci două foldere, atunci calea către acesta este scrisă astfel.

Legătură

Link-uri referitoare la rădăcina site-ului

Uneori puteți găsi calea către fișier în raport cu rădăcina site-ului, se pare „/Folder/Nume fișier” cu o bară oblică la început. Da, înregistrează Cursuriînseamnă că linkul duce la un folder numit curs, care se află la rădăcina site-ului și în el trebuie să descărcați fișierul index.

Vă rugăm să rețineți că această formă de intrare nu funcționează calculator local, dar numai sub controlul unui server web.

Sper că ați finalizat cu succes ultima sarcină și ați creat trei pagini cu text. L-am proiectat folosind etichete și ne-am amintit scopul lor. Ei bine, apare o întrebare rezonabilă: „Cum să navighezi între aceste pagini?” Uşor! Aici avem nevoie de link-uri.

Un link este un element de pagină care este în esență text simplu, dar este activ! Adică, atunci când dai clic pe acest text, vizitatorul este redirecționat către o altă pagină. Nu-i așa, exact asta căutam! Deci, să învățăm rapid cum să folosim link-urile, iată un exemplu:

Site-ul meu

Uite: eticheta „a” și are următoarele atribute: „href” și „target”, deși acestea nu sunt toate atributele pe care le are această etichetă, dar îți voi explica principiul. Unele etichete, cum ar fi link, au atribute. În același timp există atributele ceruteși nu este necesar. Mai exact, în cazul nostru, href este necesar, dar targetul nu este.
Dar să revenim la linkul în sine. În ceea ce privește ceea ce sunt, este mai bine să citiți în subiectul corespunzător de pe site-ul meu: ce fel de link-uri există. Dar acolo nu am vorbit în detaliu despre căile relative și absolute:

Https://site/1.png - cale absolută file://localhost/C:/1.png - cale absolută pe computerul local../img/1.png - cale relativă

Aici sunt cateva exemple. O cale absolută codifică adresa unei pagini sau a unui fișier. Nu este de dorit să le folosiți, deoarece dacă dezvoltați un site web pe un computer și apoi îl transferați pe server, atunci toate căile vor trebui schimbate, vă puteți imagina cât de multă bătaie de cap? Este mult mai bine să folosiți căi relative, care funcționează după cum urmează: există un director de lucru în care se află fișierul care rulează (deschis). Și toate căile relative încep deja din directorul de lucru. Pentru a muta directorul în sus, trebuie să scrieți „..” ca în exemplul de mai sus. Dacă doriți să rămâneți în acest director, scrieți imediat numele fișierului sau folderului.

Ei bine, pentru înțelegere: să avem un folder cu fișiere, care se află la următoarea adresă C:\site și există un alt folder C:\site2. In primul folder sunt pagini pagina1.html, pagina2.html, pagina3.html si un folder cu poze img, iar in celalalt folder, adica site2 sunt paginile pagina4.html si pagina5.html.
În consecință, deschidem pagina page1.html din folderul site-ului ca inițială și dansăm din ea:

Page2.html este calea către a doua pagină, se află în același director cu prima. page3.html este același. img/1.png – imagine în folderul cu imagini. ../site2/page4.html – această pagină nu se află în folder de lucru Prin urmare, am urcat într-un director și am mers în folderul site2 pentru a accesa pagina 4. ../site2/page5.html – la fel.

Sper că a devenit puțin mai clar despre căile relative și absolute.

Aici, ancora unui link este textul său pe care puteți face clic. href conține calea către care mergem. În țintă – parametrii de tranziție, de exemplu, se deschid într-o fereastră nouă. Există un indiciu de link în titlu care apare când treci cu mouse-ul peste el. Există mai multe opțiuni de link, dar sunt acest moment nu avem nevoie de el, pentru că principalul lucru acum, dacă nu ați uitat, este să legați cele trei pagini ale noastre.
Pentru a face acest lucru, deschideți o pagină în notepad și în secțiunea de corp de la început, astfel încât linkurile să fie în partea de sus a paginii, adăugați link-uri:

Girafa | Elefant | Zebra... Urmează textul nostru despre animal, pe care l-am scris mai înainte, în ultima lecție.

Nu uitați de următoarele puncte: în loc de page1.html și 2 și 3, introduceți numele paginilor dvs. Toate fișierele de pagină trebuie să fie în același folder, altfel utilizați relativ sau căi absolute pentru a le accesa.

Drumuri absolute


În acest caz, totul este foarte simplu, indicăm calea directă către un fișier aflat pe alt domeniu. Este posibil să specificați o cale scurtată folosind două bare oblice la început fără a specifica în mod explicit http sau https, iar serverul însuși va înlocui protocolul (extensia) necesar conform setărilor serverului. Este important de reținut că acest tip este necesar pentru a naviga între site-uri:
http://google.com

Relativ la rădăcina site-ului


În acest caz, browserul preia domeniul site-ului și introduce linkul specificat către acesta. În acest caz, va funcționa http://site/css/style.css.În cazul http, nu este nevoie să vă faceți griji pentru https, deoarece acesta 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 anumite funcționalități între diferite site-uri sau pentru a transfera un site de la un domeniu la altul fără a atinge codul. O modalitate prioritară de a specifica căile către pagini și fișiere.

Referitor la aceasta pagina


O metodă mai puțin populară, deoarece preia pagina curentă și adaugă o nouă adresă la calea acesteia ..com/trick/css/style.css . Aproape 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://site/tricks/css/style.css

Căi relative și absolute în PHP

Totul este foarte simplu, funcționează Sistemul de fișiere Vom respecta regulile de lucru cu căile în PHP. Dacă transmitem comanda browserului client, atunci sunt folosite căile HTML. Adică, în exemplul următor, trecem de la PHP calea către browser cu pagina la care trebuie să ajungă. Faptul că browserul a finalizat tranziția între pagini poate fi văzut în bara de adresa:
header("Locație: /page2.php");
Așadar, 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 redirecționare și A ÎNCERCAT a doua pagină pagina2. php. În acest caz, redirecționarea a fost pe partea client (browser), 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 , ceea ce înseamnă pentru a indica 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");
Aș dori să notez 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 (cum ar fi script extern) nu știe încă unde va fi postat pe site. Există mai multe modalități de a rezolva această problemă, să enumerăm 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 vă puteți conecta întregul site la Core::$ROOT fără nicio remuşcare, iar dacă accidental trebuie să schimbaţi calea către fișierul inclus, puteți suprascrie valoarea Core::$ROOT;

În raport cu fișierul de pornire (bază)

În multe sisteme index.php există un singur punct de intrare, adică index.php se deschide și alte fișiere sunt conectate de la acesta.
includ „./modules/allpages.php”;
În acest caz, allpages.php va fi conectat 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 în continuare relativ la punctul de intrare și anume index.php:
/home/school/public_html/schoolphp/modules/module/page.php
Suficient implementare convenabilă Vă rugăm să rețineți că știm clar structura aplicației noastre în raport cu rădăcina index.php. Chiar dacă numim orice alt fișier și nu index.php, căile vor funcționa exact la fel. Am numit dir.php , ceea ce înseamnă că căile vor fi luate în raport cu fișierul dir.php!

Ce altceva trebuie să știi?

Nu m-am putut abține să nu le reamintesc celor care au uitat sau 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, unde va fi căutat fișierul „file.php”.

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 specificat în Fișier de configurare server." Aceasta înseamnă că dacă calea este scrisă greșit în fișierul de configurare, întregul site nu va funcționa. Ce să faci? Puteți scrie administratorilor și proprietarilor găzduirii care găzduiește serverul cu speranța că aceștia vor corecta deficiențele lor. Sau căutați o alternativă stabilă, care este __DIR__, care este calea absolută către acest fișier, unde rulează codul fișierului. Să presupunem că avem un fișier de configurare în folderul de configurare și, astfel încât, folosind __DIR__, nu trebuie să revenim cu un folder în partea de sus de fiecare dată, scriind __DIR__"/../" putem scrie în siguranță __DIR__ în variabila noastră, în exemplul de mai jos am scris-o într-o proprietate de clasă (lecția nr. 24, cine nu a primit-o, folosește o variabilă 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 conținutul folderelor /home sau /home/school nu va fi disponibil pentru citire.

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, un produs de la dezvoltatorii PHP, unul dintre cele mai complexe FrameWork la ora actuală, folosește și căi relative cu o sintaxă diferită de a mea, adică „folder/file”.

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 în raport cu fișierul rădăcină „./file.php” (linia începe cu punct și bară oblică), 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 care lucrează cu sistemul de fișiere (conectarea fișierelor, salvarea și editarea imaginilor) - cu căi PHP.

Orice pagină web, imagine, videoclip etc. este, în primul rând, un fișier care are propriul său absolut sau relativ cale (adresă). Fișierul în sine de pe Internet se află pe un computer numit Server. Astfel, ar trebui să luați în considerare modul în care fișierul este prezentat pe server și pe Internet. În acest articol aș dori să clarific punctele de mai sus și să clarific problema ridicată. Să încercăm?

Calea absolută (adresă)

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

Calea absolută sau abordare este calea sau adresa completă, relativ la folderul de acasă pe server sau Nume de domeniu Internet.

spunand " folderul de acasă„Ma refer la inceputul spatiului alocat de furnizorul de hosting. De exemplu, dacă vorbim despre server local, pe sistem de operare Windows, unitatea în sine va acționa ca folder de acasă, adică C:/. În același timp, adesea furnizorul de găzduire alocă utilizatorului doar un anumit spațiu virtual (condițional), pentru care folderul de acasă este folder specific, numit adesea /home .

spunand " Numele domeniului „Mă refer la o adresă URL care începe cu o mențiune a protocolului, de exemplu: http://sitename.ru/. Pe Internet, acesta este folderul de acasă pentru fiecare dintre resursele prezentate.

Cum să aflați calea absolută pe server în PHP?

Dacă totul este mai mult sau mai puțin clar cu adresa URL, atunci cu folderul de acasă de pe server situația este ceva mai complicată. Până la urmă, fiecare furnizor are propriile sale probleme și acest lucru ar trebui să fie luat în considerare.

Permiteți-mi să încep cu faptul că calea absolută pe server este de obicei determinată în raport cu locația scriptului în care se întâmplă acest lucru. De exemplu, fișierul config.php se află în folderul rădăcină al site-ului și trebuie să aflăm calea absolută către acesta.

Permiteți-mi să clarific spunând „ Dosarul rădăcină „Ma refer la un folder pe server dedicat site-ului. Acesta este ceea ce servește ca punct de plecare al URL-ului în raport cu numele de domeniu.

Pentru a face acest lucru, puteți utiliza constanta __FILE__, care conține calea completă și numele fișierului curent în care este apelat. Pentru a obține doar calea completă și pentru a elimina numele fișierului curent, puteți utiliza funcția dirname(), care returnează directorul părinte calea specificată. De exemplu:

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

În PHP 5.3 și versiuni ulterioare, puteți utiliza deja constanta __DIR__:

$abspath = __DIR__

Astfel, este foarte convenabil să includeți fișierul config.php în viitor și să folosiți calea absolută a variabilei $abspath obținută în acesta ca punct de start. De exemplu, să presupunem că scriptul test.php este localizat în folderul: cale/ - și fișierul necesar data.txt în folderul: data/ . În acest caz, apelul poate arăta astfel:

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

Vă rugăm să rețineți că am conectat fișierul config.php folosind o cale relativă, dar mai multe despre asta mai târziu.

Cale relativă (adresă)

Ce este o cale relativă a fișierului?

Calea relativă sau abordare este o cale sau o adresă relativă la locația fișierului în care este accesat un alt fișier.

Orice sistem de fișiere este o ierarhie strictă a dosarelor și fișierelor părinte și copil. De exemplu: C:\folder\file.php – aici folderul\ este un copil al unității C:\ și un părinte al fișierului fișier.php.

Pentru claritate, să luăm în considerare următoarea ierarhie:

  • fișier1.php
  • pliant\
    • fişier.php
    • subdosar\
      • fișier3.php

Pentru a accesa fișierul C:\file2.php din fișierul C:\folder\file.php , trebuie să părăsim fișierul curent foldere\, adică urca un nivel. Pentru aceasta puteți folosi, pliant (aș spune chiar pseudo-folder) Directorul Parinte, reprezentând două puncte (..) . Cu alte cuvinte, vom obține calea: ..\file2.php - relativ la fișierul fișier.php .

Pentru a accesa fișierul C:\folder\file.php din fișierul C:\folder\subfolder\file3.php , trebuie să intrăm în subfolder\ subfolder, adică. coboara un nivel. Deci obținem calea: subfolder\file3.php - relativ la fișierul file.php .

Să complicăm lucrurile și să trecem de la fișierul C:\folder\subfolder\file3.php la fișierul C:\file2.php . Calea relativă va arăta astfel: ..\..\file2.php - am urcat cu două niveluri mai sus. Faceți invers, adică din fișierul C:\file2.php ne întoarcem la fișierul C:\folder\subfolder\file3.php. Calea relativă va arăta astfel: folder\subfolder\file3.php - vom coborî două niveluri.

Avantajele și dezavantajele căii relative (adresă)

Evident, calea relativă nu conține folderul principal și folderele părinte. Astfel, adresa finală este mai scurtă. Mai mult, dacă trebuie să vă mutați de la un domeniu la altul, nu va fi nevoie să înregistrați o nouă adresă absolută.

Pe de altă parte, dacă cităm conținutul unui site pe o altă resursă, cu aceleași imagini în care este specificată calea relativă, vom primi o eroare, deoarece Nu există foldere și fișiere de site pe resursa terță parte. Acest lucru se va întâmpla dacă vizualizați o pagină în cache. motoare de căutare. Din nou, utilizarea unei căi relative poate face cu ușurință o greșeală, ceea ce va duce la o problemă de indexare a site-ului.

Pentru a rezuma, trebuie remarcat faptul că este recomandabil să se minimizeze utilizarea căilor sau adreselor relative și să se utilizeze căi și adrese absolute.

Concluzie

În articolul meu, am încercat să iau în considerare problema fundamentală legată de căile absolute și relative (adresele) către fișiere și foldere. De fapt, dacă lucrezi pe un computer, atunci a priori ai deja o idee despre sistemul de fișiere, dar fără a ține cont de unele nuanțe, este destul de dificil să pornești la sol și să ridici o serie de probleme care se referă în mod inevitabil la adresarea corectă. Asta e tot ce am. Vă mulțumim pentru atenție. Noroc!

la 8:00 Editați mesajul 5 comentarii

După cum știți, în parametrul href al etichetei () trebuie să specificați calea către fișierul la care se face referire.
Mulți oameni scriu ceva de genul http://somesite.ru/catalog/doc.html. Da, nimeni nu se ceartă, funcționează. Dar există un „dar”. Să ne uităm la un exemplu.

Lăsați site-ul dvs. să fie găzduit, de exemplu, pe unele hosting gratuit și adresa sa a fost următoarea: http://fsite.freehosting.ru.
Există aproximativ 100 de documente pe server. Așa că decideți să vă mutați site-ul pe alt domeniu,
să fie plătită găzduire în zona ru: http://site.ru. Ei bine, ar trebui să schimbăm acum http://fsite.freehosting.ru în http://site.ru peste tot?
Da, datorită editorilor precum Homesite, acest lucru este posibil. Dar aceasta nu este o soluție.
Să presupunem că înainte de a încărca o pagină pe server, verificați funcționalitatea acesteia
pe serverul tău Apache de acasă (pentru cei care încă nu știu ce "
serverul de acasă" - aici (Instalare și configurare server apache), iar în loc de http://localhost va trebui să scrieți peste tot http://site.ru. De acord cu asta, de macar, incomod.

Soluția este ca, atunci când specificați calea către un fișier, să luați în considerare nu poziția acestuia pe site, ci poziția sa pe server.

Calea absolută

Să luăm, de exemplu, fișierul doc.html, care se află la: http://somesite.ru/catalog/doc.html. Pe server, după cum știți, există un folder www. După cum putem vedea din adresă, acest folder conține folderul catalog și conține deja fișierul doc.html.

Dacă, atunci când specificați calea către un fișier, puneți / în fața adresei, atunci aceasta va fi similar cu următorul: director_rădăcină_în_nord/www/calea fișierului.
Adică, http://somesite.ru/catalog/doc.html este similar cu următorul: /catalog/doc.html.
Deci, când există un / în fața adresei, înseamnă că „numărătoarea inversă” începe din directorul www.
Acum, în loc de http://localhost/index.html, puteți scrie /index.html din orice document.
Dar pentru a ajunge la directorul cgi trebuie să scrieți acest lucru: /cgi-bin/path to the file.

Căile create folosind metodele descrise mai sus sunt numite absolute, deoarece este indicată calea absolută (completă) către fișierul de pe server.

Calea relativă

Există, de asemenea, căi relative, care sunt specificate în raport cu documentul însuși de la care provine legătura.
De exemplu, dacă creați un link în doc.html newcat/new.html, aceasta înseamnă că fișierul new.html este localizat în directorul newcat, care, la rândul său, se află în același director cu fișierul doc.html. După cum puteți vedea, această cale este relativă la fișierul doc.html. Oriunde se află acest fișier, calea newcat/new.html va fi întotdeauna validă dacă fișierul doc.html și directorul newcat sunt la același nivel (adică în același director).

De asemenea, puteți muta în sus un director în raport cu un document. Pentru a face acest lucru trebuie să scrieți ../.
De exemplu, există un director mare, care conține două directoare: primar și secundar. Directorul principal conține fișierul deja familiar doc.html; iar în directorul secundar există un fișier new.html. Pentru a crea un link din fișierul doc.html către fișierul new.html, trebuie să scrieți ../secondary/new.html. Dar dacă directorul mare se află în directorul www, atunci calea către fișierul new.html ar putea fi specificată astfel: /big/secondary/new.html

În loc de o concluzie, merită spus că utilizarea căilor absolute și relative facilitează foarte mult munca webmasterilor, fie că sunt începători sau profesioniști. Așa că folosiți această oportunitate, după cum se spune, la maximum și încercați să evitați căi precum http://site.ru/catalog/file.file, sau cel puțin să apelați la ajutorul lor cât mai puțin posibil.