Абсолютні та відносні шляхи до файлів

Наприклад, у нас є посилання типу http://mysite.com/index.html

Логіка користувача комп'ютера підказує, що десь інсує файл index.html, який завантажується з сервера у наш браузер.

Якщо сервер працює під операційною системою Linux чи BSD, то, скоріш за все, цей файл буде знаходитися в папці з таким чи подібним шляхом:

/var/www/public-html/

Можна налаштувати веб-сервер так, щоб він брав файли для http://mycite.com/ з папки D:\work\frontend\magazin_futbolok\.

Папка, з якої беруться файли для веб-сайту - називається коренем, кореневим каталогом.

Таким чином, якщо у нас на сайті є зображення чи pdf-файл, то їх адреса буде приблизно такою:

http://mysite.com/images/cat.jpg
http://mycite.com/files/pdf/instruction.pdf

а в реальності файли будуть зберігатися за адресою:

/var/www/public-html/images/cat.jpg
/var/www/public-html/files/pdf/instruction.pdf
або
d:\work\frontend\magazin_futbolok\images\cat.jpg
d:\work\frontend\magazin_futbolok\files\pdf\instruction.pdf

Кореневий каталог сайта це папка, в якій зберігаються всі файли сайта (доступні для фронтенда).

Кореневий каталог в операційних системах Linux, BSD, MacOS є / (слеш).

В цьому каталозі можна бачити папки var, home, usr, dev, bin і т.п.

В операційній системі Windows кожен диск є кореневим каталогом: C:\, D:\, E:\ і т.д.

В інтернеті кожен сайт має кореневий каталог /.

localhost
localhost/

На одному комп'ютері (сервері) може розташовуватися багато сайтів, в кожного буде свій домен, свій кореневий каталог:

d:\server\sites\localhost\
d:\server\sites\magazin_futbolok\
d:\server\sites\landing_honey\
d:\server\sites\wp-blog\
d:\server\sites\test1.ru\
d:\server\sites\humor.km.ua\

Абсолютний шлях - повний шлях до файлу, ресурсу на конкретному комп'ютері чи веб-сайті:

d:\work\frontend\magazin_futbolok\images\cat.jpg
/var/www/public-html/images/cat.jpg
http://mysite.com/images/cat.jpg

Якщо ви будете використовувати абсолютні шляхи до файлів, то при перенесенні папки в інше місце, переіменуванні папки, відправленні zip-архіва сайта замовнику чи колезі, зміні домена сайта така адреса стане неправильною:

<img src="d:\work\frontend\magazin_futbolok\images\cat.jpg" alt="">
<img src="http://ukr-futbolki.com/images/cat.jpg" alt="">

На сайтах можна використовувати абсолютний шлях:

<img src="/images/cat.jpg" alt="">

Фактично, такий скорочений шлях браузер автоматично перетворить на повний:

<img src="http://mysite.com/images/cat.jpg" alt="">

але під час розробки сайту якщо ви не використовуєте локальний веб-сервер, це буде не зручно, всі файли будуть зсилатися на кореневі каталоги операційної системи.

Примітка: в ОС Windows також використовуйте прямий слеш, а не зворотній:
d:/work/frontend/magazin_futbolok/images/cat.jpg
ця операційна система розуміє обидва варіанта слешів, прямий слеш є універсальним для всіх ОС та URI-адрес в інтернеті.

Відносний шлях - це шлях до файлів з поточного каталога.

Наприклад, ми відкрили папку d:\video\mults\, в цій папці є папка Simpsons\, в ній s06\, в останній - всі серії шостого сезону, серед яких файл s06e12.avi.
відносний шлях до файла з поточного каталога d:\video\mults\ буде таким:

Simpsons\s06\s06e12.avi

Якщо ми зайдемо у папку Simpsons, то відносний шлях до того ж файлу буде таким:

s06\s06e12.avi

Якщо перейдемо на диск D:\, то відносний шлях буде таким:

video\mults\Simpsons\s06\s06e12.avi

Відносний шлях на сайті також відраховується з поточної сторінки. Для сторінки http://mysite.com/index.html відносний шлях до картинки з котом буде:

images/cat.jpg

Якщо ми перейдемо в каталог files:
http://mysite.com/files/pdf/
фактично буде відображено файл
http://mysite.com/files/pdf/index.html,
з цієї сторінки відносний шлях до інструкції буде просто назвою файлу:

instruction.pdf

а з головної сторінки сайту відносний шлях буде:

files/pdf/instruction.pdf

Каталог ../ - це перехід в батьківську папку.

Нехай ми відкрили папку:

d:\video\mults\Simpsons\

Відносний шлях ..\ - це звернення до батьківського каталога
d:\video\mults\
Також можна використовувати і абсолютний шлях:
d:\video\mults\Simpsons\..\
те саме, що і
d:\video\mults\

Можна використати декілька звернень до батьківського каталога:
d:\video\mults\Simpsons\s06\..\..\..\
це звернення до папки
d:\video\

Якщо ми відкрили папку s06\, то відносний шлях
..\..\..\
також вкаже на папку video\

Тепер розглянемо відносні шляхи у межах сайту. Нехай ми переглядаємо веб-сторінку:

http://mysite.com/files/pdf/index.html

Для того, щоб помістити зображення на цю сторінку, використовується код з вказанням відносної або абсолютної адреси:

<img src="../../images/cat.jpg" alt=""> - відносна адреса
<img src="/images/cat.jpg" alt=""> - абсолютна адреса

Але не завжди посилання - це є файл в конкретній папці на сервері, комп'ютері. Зображення, файл може зберігатися у базі даних, у специфічних файлових системах, або ж мати приблизно таку реальну адресу:
http://s261435zc.files.bin/45f894ca15a/20161204/03/azr/k3cf919do7cc79.jpg
а буди доступним за "фіктивною" адресою:
http://mysite.com/funpics/cat.jpg
http://mysite.com/download?file=45159_cat.jpg

Також сучасні технології передбачають створення окремої веб-сторінки з багатьох окремих файлів.

Так, сторінка http://mysite.com/index.html насправді може бути відсутня на сервері, а при зверненні до цієї адреси файл index.html буде збиратися як конструктор з окремих файлів:
- main.php;
- head.php;
- header.php;
- aside.php;
- content.php;
- footer.php;
- widgets.php;
- map.inc;
і так далі.

Тому розрізняють два такі поняття:

URL (Unique Resource Location) - унікальне розміщення ресурса (справжня адреса файла).

URI (Unique Resource Identificator) - унікальний ідентифікатор ресурса (посилання, за яким можна отримати файл).

Кожен URL є також і URI, але не навпаки, URI може зсилатися на ресурс, який не існуює у вигляді окремого файла, або ж є потоковими даними - стрім-відео реального часу, телеметрія, біржеві індекси і тому подібне.

Ресурси

Различие между абсолютными и относительными путями.