Абсолютні та відносні шляхи до файлів
Наприклад, у нас є посилання типу 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 може зсилатися на ресурс, який не існуює у вигляді окремого файла, або ж є потоковими даними - стрім-відео реального часу, телеметрія, біржеві індекси і тому подібне.