Относительный и абсолютный путь к файлу
В данном уроке мы объясним новичкам, что такое абсолютный и относительный путь к файлу, а также в каком случае какой из них лучше использовать. Если вы уже знакомы с данной темой, вы можете переходить к следующему уроку.
Итак, начнем с определения самого термина «путь»:
Путь (англ. path) — набор символов, показывающий расположение файла в файловой системе, адрес каталога.
Википедия
Если говорить о сайтах, то путь — это то же, что и ссылка. Ссылки могут быть абсолютными и относительными. Рассмотрим оба варианта более подробно.
Что такое абсолютный путь к файлу
Абсолютный адрес ссылки на файл включает в себя протокол (например, http:// ), имя сайта в Сети, подкаталог (или несколько подкаталогов), название файла. Пример того, как выглядит абсолютный URL:
Абсолютный путь можно использовать в CSS. Например, чтобы задать рисунок в качестве фона, вы можете взять абсолютный URL к файлу с изображением И указать его в таблице стилей:
background-image: url(http://www.example.com/img/bg.png);
Абсолютная ссылка всегда будет указывать на одно и то же место, независимо от того, где расположен содержащий ее документ (в нашем случае таблица стилей). Чего не скажешь об относительной ссылке.
Что такое относительный путь к файлу
С относительным адресом всё намного интереснее — он может отсчитываться как от корня сайта, так и от текущего документа. Корневой относительный путь — это путь, который указывает на расположение файла относительно корневого каталога сайта. В этом случае адрес не содержит ни протокола, ни имени домена, и начинается со знака слэша / , который указывает на корневую папку. Выглядит этот адрес так:
background-image: url(/img/bg.png);
Как легко определить корневой относительный адрес? Просто возьмите абсолютную ссылку и уберите из нее протокол и название домена, оставив слэш и все символы, которые идут дальше.
Относительный путь к файлу от документа — это путь к файлу относительно текущего документа. Такой адрес зависит от расположения файла, в котором он записан. Так, когда относительная ссылка указывается в таблице стилей, она рассчитывает путь к файлу, отталкиваясь от таблицы стилей, а не от текущей веб-страницы либо корневой папки. Приведем несколько примеров.
Пример I
Если наша таблица стилей style.css и файл с фоновым рисунком bg.png находятся в одной папке (не обязательно корневой), то относительный путь от таблицы до рисунка будет выглядеть так:
background-image: url(bg.png); /* вы просто пишете имя файла */
Пример II
Если таблица стилей находится в корне, а рисунок — в папке img , относительная ссылка будет таковой:
background-image: url(img/bg.png); /* слэш в начале не нужен */
Пример III
Если таблица стилей находится в папке, а рисунок соседствует с этой папкой, то относительный путь будет таким:
background-image: url(../bg.png); /* две точки — подняться на один уровень */
Пример IV
Если таблица стилей находится в двух папках, а рисунок соседствует с первой папкой, то относительный путь будет следующий:
background-image: url(../../bg.png); /* поднимаемся на два уровня */
Две точки и слэш в начале относительного пути означают подъем на один уровень вверх. В зависимости от количества уровней (каталогов), на которые нужно подняться, необходимо прописать нужное количество точек со слэшом. К примеру, если таблица стилей лежит не в двух, а в четырех папках, запись, соответственно, будет следующей:
background-image: url(../../../../bg.png);
В том случае, когда рисунок спрятан в папку img , а таблица стилей — в папку css , вам понадобится выйти из папки css и зайти в папку img . Вот так:
background-image: url(../img/bg.png);
Если папок несколько, необходимо также прописать их. Изменим предыдущий пример: представим, что в папке img есть еще одна папка backgrounds , в которой лежит наш рисунок. Относительный путь будет таким:
background-image: url(../img/backgrounds/bg.png);
Какой путь лучше использовать
Абсолютный адрес ссылки понадобится использовать, если файл, на который вы ссылаетесь, находится на другом сайте. В пределах одного сайта абсолютный путь практически не используется (хоть он и будет работать). Это связано с несколькими моментами: во-первых, такие ссылки могут быть весьма громоздкими, а во-вторых, если имя домена изменится, то возникнет проблема — все ссылки будут вести на старый домен, что может повлечь за собой множество ошибок и битых ссылок.
Корневой относительный путь будет работать на веб-сервере, но он бесполезен при разработке на локальном компьютере. Но преимущество этого типа ссылок в том, что вы можете перемещать свою таблицу стилей в любую папку сайта и не бояться, что адреса фоновых изображений станут нерабочими.
Относительный путь от документа — наилучший вариант при веб-разработке на локальной машине без использования сервера. В браузере вы сможете нормально просматривать веб-страницы, хранящиеся на вашем компьютере, и адреса файлов будут работать. Они будут работать и на живом сайте, но с одним условием — если не перемещать таблицу стилей в другое место (иначе придется корректировать пути).
Попробуйте потренироваться в использовании относительных путей как на локальном компьютере, так и на веб-сервере. Понимание того, как это работает, непременно пригодится вам в любом проекте.
Далее в учебнике: свойство background-repeat — управление повтором фонового изображения.
Абсолютный и относительный путь к файлу
На HTML странице часто приходится загружать различные файлы. Это ссылки на другие страницы, изображения, файлы стилей и другие. Чтобы файлы могли загрузиться, в коде страницы нужно указывать не только имя файла, но и его адрес. Существуют абсолютный и относительный путь к файлу. Рассмотрим их подробно.
Абсолютный путь к файлу
Абсолютный путь к файлу — это URL-адрес, например https://yandex.ru. Абсолютный адрес обычно используется для перехода на другой сайт. Внутри одного сайта тоже можно использовать абсолютный путь к файлу, но так редко делают, потому что это неудобно. Абсолютный адрес можно указать не только для главной страницы сайта, но и для любой доступной страницы. Узнать адрес любой страницы очень просто, он отображается в адресной строке браузера. Если Вам нужно указать адрес страницы, то нужно открыть страницу в браузере и скопировать её адрес из адресной строки.
Относительный путь к файлу
Относительный путь к файлу это путь относительно текущего файла, то есть относительно страницы, внутри которой указывается путь к файлу. Относительный адрес зависит от расположения текущей страницы и ссылаемого файла.
Самый простой вариант — это когда текущий и ссылаемый файлы находятся в одной папке. В этом случае нужно указывать только имя файла. Например ссылка на страницу page.html выглядит так:
Здесь нужно только не забывать о том, что расширение является составной частью имени, и его всегда нужно указывать. Если не написать расширение, то путь к файлу будет указан неправильно.
Рассмотрим ситуацию сложнее — когда ссылаемый файл находится во вложенной папке относительно текущей страницы. В этом случае пишется имя папки, затем ставится слеш и имя файла.
Например, текущая страница находится в какой-то папке. Внутри этой папки есть папка myimages, а в ней картинка image.jpg. Добавим её страницу.
Может быть несколько уровней вложенности. В этом случае папки перечисляются через слеш от самой внешней до самой внутренней, а затем ставится имя файла. Например, в папке myimages находится папка newimages, а в ней уже находится картинка. Тогда картинка добавляется так:
Теперь рассмотрим обратную ситуацию — когда ссылаемый файл находится в более внешней папке относительно текущей страницы. Для перехода на более внешнюю папку ставятся две точки, затем слэш, затем имя файла.
Например, есть две папки, внешняя и внутренняя. Во внутренней находится наша страница, а во внешней находится страница page.html, на которую нужно сделать ссылку.
Если нужно перейти ещё на один уровень вверх, то ещё раз ставятся две точки и слеш. Ссылка будет выглядеть так:
Есть ещё один способ указания относительного пути к файлу — это путь относительно корня сайта. То есть, самой внейшней папки сайта. В этом случае не имеет значения, где находится текущая страница. При таком способе сначала ставится слеш, а затем путь к файлу. Такой способ работает только на сервере. Для обычной папки на компьютере он работать не будет.
Например, если файл page.html находится в корне сайта, то независимо от расположения текущей страницы, ссылка на него выглядит так:
Если в корне сайта есть папка dir, а в ней уже файл, то ссылка на файл выглядит так:
Коприрование материалов сайта возможно только с согласия администрации
2017 — 2023 © basecourse.ru Все права защищены
Файлы и пути к ним
Путь к файлу – это набор символов, который показывает расположение того или иного файла в операционной системе. Запись, которая включает в себя разделительный знак в виде «» (обратного слеша). Также существуют пути каталогов. Все они используются в файловых системах компьютеров и иных устройств.
Работать с соответствующим элементом предстоит всем, кто пользуется оборудованием: программистам, системным администраторам, обычным пользователям. В данной статье речь зайдет о видах путей к каталогам и документам. Предложенная информация поможет классифицировать соответствующие «символьные наборы», а также научит пользоваться ими.
Особенности
Определение пути к каталогу или файлу можно дать как «маршрут». Это – «дорога», по которой нужно пройти, чтобы отыскать конкретные директории или документы на устройстве. Последовательность, записываемая по определенным принципам. Форма представления зависит от вида путей каталогам.
За основу возьмем работу в операционной системе Windows (Виндовс). Здесь рекомендуется запомнить такие нюансы:
- Есть «маршрут» начинается с обратного слеша (символ обратной косой черты), то система будет воспринимать его, как идущий от корневого каталога.
- Каждое имя каталога или файла, указанное в пути, должно соответствовать входу в папку.
- Символ «…» (многоточие) – это переход в родительский каталог.
- Слеш «/» — указывает, куда делать следующий «шаг».
Это – база, без которой дальнейшая работа с Windows и «маршрутами» в ней невозможна.
Имя
Путь к файлу не получится указать, если не знать, как правильно пишется его имя. То же самое касается и папок. Для поиска директории или документов максимально эффективно и быстро, необходимо узнать полное имя того или иного объекта.
Имя файла в системах DOS и Windows включает в себя три элемента:
- непосредственное название – имя;
- разделитель (точка);
- расширение (тип информации, с которой предстоит работать).
По умолчанию в Виндовс расширения (виды) документов скрыты. Эта информация среднестатистическому пользователю не нужна. Способов узнать расширение документа несколько. Пример – через параметр «Свойства». Методов включения отображения расширения тоже несколько – все зависит от конкретной операционной системы.
MS DOS определяет для имени всего 8 символов. Такое ограничение было в старых версиях операционных систем. Теперь оно упразднено, но это не значит, что нужно давать документам слишком длинные названия. Это усложнит поиск пути к файлу.
Разновидности
Для получения доступа к той или иной директории, а также любому документу на устройстве, нужно знать, где он размещается. Здесь на помощь придет путь к файлу. Он может быть нескольких видов:
- относительный;
- абсолютный.
Зная особенности каждого варианта, можно выучить, как правильно записать каждую форму представления, а также использовать соответствующую последовательность на практике.
Относительный вид
Относительный путь к файлу – это «маршрут» к документу относительно текущего каталога. Текущий каталог – это тот, в котором запускается программа, скрипт или открывается страница в браузере.
Он ссылается на местоположение относительно текущей директории. Используют два специальных символа:
- Точку «.». Используя этот символ, можно перейти в текущий каталог.
- Двойную точку «..». Позволяет посмотреть (перейти) в родительский каталог. Используется для перехода на один уровень вверх.
Выше – наглядный пример расположения файлов в системе. Эта графическая последовательность используется для быстрого поиска конкретного документа на компьютере. Она поможет понять, как правильно указать путь к файлу относительного вида.
Для перехода в Posters нужно записать такую последовательность: D:DataMapsPosters. Соответствующая запись указывает на то, что нужно перейти на диск D, затем в директорию Posters, которая расположена в Maps. Последняя вложена в Data, размещенной на разделе диска с именем D.
Текущая директория – это корневая папка. После перехода в каталог Posters именно он будет выступать корневым.
Нюансы работы
Понятие путей к файлам, а также к каталогам понятно. Также стало понятно, что обозначает относительный «маршрут». Чтобы лучше работать с ним, рекомендуется рассмотреть наглядный практический пример. За основу возьмем документы, которые находятся на устройстве по образцу выше.
Предположим, что хочется перейти к папке Landuse из текущей директории, которая называется Soils. Чтобы переключиться туда, нужно:
- Открыть адресную строчку Windows.
- Узнать путь к файлу или директории. В нашем случае – к конкретной папке.
- Написать в адресной строчке запись формы: ..Landuse.
В данном случае Windows произведет поиск каталога, после чего перейдет в D:DataShapefilesLanduse.
Абсолютный путь
Абсолютный путь к файлу означает полный «маршрут» до документа или архива. Он включает в себя все диски, а также имена папок и файлов, которые нужно открыть для перехода к заданному изначально объекту.
Файловая система Windows работает преимущественно с таким вариантом. Он наиболее прост для понимания среднестатистических пользователей. В Виндовс все начинается с диска или его раздела. Традиционно он записывается как одна буква:
Абсолютно сформированный путь к до файла формируется по определенному принципу. Его легко запомнить. Он выглядит так:
- Начинается всегда с диска, на котором находится тот или иной объект. Это – корневой диск.
- Все вложенные папки. Все то, куда будет заходить пользователь или файловая система, чтобы искать объект.
- Имя файла. Оно должно быть записано корректно. Желательно вместе с расширением (типом).
Сейчас покажу, как выглядит путь до файла статья.txt:
Стоит обратить внимание на принципы правильного формирования пути к файлу: начинается с диска, на котором расположен, а разделяющими символами служат обратные слеши. Предложенная ранее запись показывает, что файл статья.txt находится на диске C, в папке Media, которая расположена в директории Thecode. Последний элемент – это корень.
Разница с UNIX
В MacOS, как и в любой UNIX-системе все диски – это тоже папки. Это значит, что по умолчанию все новые диски будут подключаться как папки внутри папки /Volumes.
Понятие полного пути к файлу в Windows раскрыто. Это «маршрут», в начале которого указывается диск, на котором расположен объект. В случае с MacOS и Linux не только отсутствуют диски, но и используются измененные разделительные знаки. А именно – знаком «/».
Больше разницы между Windows и UNIX-системами нет. Абсолютный путь к директории означает написание всего «маршрута», по которому должен пройти клиент для обнаружения «архива». Относительный – его «уменьшенная» вариация.
Что лучше использовать
Абсолютный и относительный путь к каталогу (или иному объекту системы) – означает почти одно и то же. Первый вариант отвечает за определение полного «маршрута» до документа, второй – ее «урезанную» интерпретацию.
Перед тем как программировать или работать в операционной системе, встает вопрос о том, какую форму представления использовать.
При программировании и разработке используется относительный вариант. Связано это с тем, что находить документы и директории тут не сложно – они расположены в корневой папке проекта.
Для системного администрирования и получения доступа к тем или иным объектам ОС, рекомендуется использовать полный путь. Он более информативный. Это значит, что компьютеру или пользователю предстоит сделать все «шаги», предусматриваемые «маршрутом», для получения доступа к объекту.
Принцип использования того или иного «адреса» прост:
- работа в интернете с чужими документами – абсолютный вариант;
- оперирование собственными объектами проекта – относительный.
Теперь выясним, как по имени файла провести определение пути к файлу, а также скопировать соответствующий «адрес».
Как определить и скопировать маршрут
Существуют различные методы реализации. Для того, чтобы просмотреть полный путь файла, а затем перенести его в буфер обмена устройства, можно использовать системные возможности и «горячие клавиши». Все варианты достаточно просты в освоении.
Через Shift
Первый прием показывает, как копировать в буфер обмена «адрес» документа или директории без его непосредственной демонстрации:
- Выбрать файл, который хочется использовать.
- Нажать на Shift на клавиатуре и кликнуть ПКМ по документу.
- Выбрать «Скопировать как путь».
Теперь можно пользоваться соответствующей информацией по собственному усмотрению.
Свойства
Понятие полного пути к файлам раскрыто. Посмотреть его в Windows можно через «Свойства» объекта. Там найдете не только местоположение файла/директории, но и иную важную информацию вроде объема и расширения.
Чтобы воспользоваться этим приемом, нужно:
- Найти документ на устройстве.
- Нажать ПКМ по нему.
- Выбрать параметр «Свойства».
- Открыть вкладку «Общие».
Теперь в разделе «Расположение» можно увидеть путь к соответствующему файлу вместе с именем файла. Остается выделить значение строчки «Адрес» и скопировать его. Пример – при помощи ctrl + c.
Командная строка
Командная строка Windows позволяет отследить путь из корневого каталога до желаемого объекта с самого начала. Выводит информацию в консоли:
- Открыть командную строку.
- Перетащить иконку документа в основное окно приложения «Командная строка».
- Посмотреть на результат.
В консоли появится путь к желаемому файлу вместе с именем файла, а также всеми папками, которые нужно открыть для поиска соответствующего элемента.
В MacOS
Для MacOS уточнение расположения документов/директорий проводится точно так же, как и в Windows – при помощи Shift. Здесь предстоит найти тот или иной файл в Finder, а затем, удерживая клавишу Option, зажать ПКМ. Теперь остается выбрать команду «Скопировать путь до…».
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus !
Различие между абсолютными и относительными путями. В файловой системе и на сайте.
твой сайт существует в как бы в двух измерениях.
Реальном и виртуальном.
Для всех посетителей — это виртуальный веб-сервер. Который отличается, в числе прочего, тем, что на нем НЕ СУЩЕСТВУЕТ ФАЙЛОВ. если ты пишешь http://site.ru/file.html — это не файл. Это URI, виртуальный адрес. Никакого файла с именем file.html на сервере может вообще не быть. Это все виртуальные адреса, а не файлы.
И браузер работает именно с адресами.
Для разработчика же сайт — это программа, выполняющаяся на совершенно конкретном реальном компьютере. С совершенно конкретным жестким диском, каталогами и файлами. И скрипт, работая со своими данными, подгружая другие скрипты, работает именно с реальными ФАЙЛАМИ, на физическом ДИСКЕ.
Вот в этом различии и кроются трудности, с которыми часто сталкиваются новички.
Теряют файлы, путают ссылки с файлами, обращаются к локальным файлам по протоколу HTTP, или инклюдят файлы от корня веб-сервера.
А всего-то надо четко понимать две вещи:
1. Различать корень веб-сервера, как его видит браузер, и корень файловой системы на диске.
2. Отличие относительных путей от абсолютных.
Начнем со второго.
Это очень просто. Если путь указывается от корня системы, то это путь абсолютный. Это как почтовый адрес в реальной жизни — откуда бы ты не шел, но по точному адресу ты всегда точно найдешь нужное место.
примеры абсолютных путей:
/var/www/site/forum/index.php
/img/frame.gif
с:\windows\command.com
В юникс-системах и на веб сайтах корень обозначается косой чертой — «/».
Это важно. Это не просто палочка, а самостоятельный АДРЕС, путь.
В адресе http://www.site.ru/ последняя косая черта — не для красоты! Она обозначает вполне конкретный адрес — начало сайта.
На диске в юникс системах так же можно набрать «cd /» и ты попадешь в корневой каталог.
В виндоус системах файловая система разбивается по дискам, поэтому, в абсолютном адресе надо указывать имя диска. Абсолютного корня всей файловой системы в виндоус нет, у каждого диска — свой. Например, C:\ E:\
поэтому, даже если путь в виндоус начинается с косой черты, то это не абсолютный путь, а относительный. Относительно текущего диска. А абсолютный начинается с буквы.
Если в начале пути корень не указать, то этот путь будет относительным, и он достаивается от текущего положения. В реальной жизни это напоминает дорогу к винному магазину — «два квартала налево и там все время прямо». Дойти по такому пути можно только из конкретной точки. Из другой ты попадешь уже в совсем другое место.
Самый простой пример относительного пути — это просто имя файла.
Если файл находится в том же каталоге, с которым работает программа — она его найдет, добавив текущий путь к имени файла.
примеры относительных путей:
file.php (фал лежит в той же папке)
./file.php (фал лежит в той же папке. такая запись иногда требуется в некоторых юникс системах)
images/picture.jpg (файл лежит в капке images, которая находится в текущей)
../file.php (файл лежит в папке, которая расположена на один уровень выше от текущей)
../../file.php (файл лежит в папке, которая расположена на два уровня выше от текущей)
И операционная система, и браузер, встретив относительный путь, достраивают его до абсолютного. но каждый — по-своему.
Теперь перейдём к первому пункту.
Различие корня веб-сервера, как его видит браузер, и корень файловой системы на диске.
В общем-то, из предыдущих объяснений уже все должно быть понятно.
На диске путь к файлу скрипта может быть таким:
/var/www/site/forum/index.php
В то же время, виртуальный адрес этого скрипта при просмотре через браузер, будет:
http://www.site.ru/forum/index.php
На этом примере легко увидеть, где пересекаются два измерения: у этих двух адресов есть общая часть — /forum/index.php — и она-то и служит причиной путаницы.
Для браузера это самый полный путь, который только может быть. Он начинается от корня сайта.
Для скрипта же, исполняющегося на сервере — это всего лишь ЧАСТЬ пути.
для скрипта путь /forum/index.php окажется несуществующим — в корне диска нет каталога forum!
чтобы получить полный путь для того, что на сайте выглядит, как /forum/index.php , надо приставить слева к нему путь к папке, которая считается корневаой для всего веб сервера.
в нашем примере — это
/var/www/site
Этот путь задается в кофигурации веб-сервера и именно он содержится в системной переменной PHP $_SERVER[‘DOCUMENT_ROOT’]
В виртуальном же сервере — том, который видит пользователь — наоборот, нет никакого диска. Есть корень сайта. То есть, для того, чтобы любая ссылка гарантированно работала, независимо от того, из какого места сайта она вызывается, она должна быть абсолютной.
Если у вас на сайте есть, допустим, два раздела:
http://www.site.ru/about/info.php
и
http://www.site.ru/job/vacancy.php
то, если в файле info.php сделать ссылку просто на vacancy.php , то браузер ее не найдет — он будет искать адрес http://www.site.ru/about/vacancy.php , достраивая путь от текущего каталога.
Поэтому надо писать полный путь от корня сайта — /job/vacancy.php
Всё это касается, естественно, не только тегов но и и любых других, где используются ссылки на другие файлы.
Ссылки на локальные адреса следует писать без указания протокола и домена — только путь от корня сайта — /job/vacancy.php . Ссылки же на другие сайты следует писать полностью — http://www.site1.ru/job/vacancy.php .
PHP предоставляет множество средств для работы с файлами, каталогами и URL-ами.
Во-первых, это многочисленные предопределённые переменные, которые описаны в документации и значения которых в своём скрипте можно посмотреть с помощью команды phpinfo() :
Константа __FILE__ содержит имя текущего исполняемого файла.
В отличие от PHP_SELF она содержит имя файла, исполяющегося в данный момент.
очень полезной представляется конструкция dirname(__FILE__) , на которую желательно заменить все вызовы файлов, лежащих в том же каталоге, что и вызывающий скрипт. Например:
require dirname(__FILE__).»/init.php»
функция dirname() , наряду с basename() является одними из наиболее употребительных для работы с файлами и каталогами.
Примечание:
При проблемах с путями при переносе скриптов с виндоус на юникс систему, в первую очередь обращайте внимание на регистр букв. На юникс-серверах регистр букв в имени файла имеет значение, File.txt и file.txt — это два разных файла, а под виндоус — один и тот же. Лучше всего писать имя файла всегда точно, соблюдая регистр.