Абсолютные и относительные ссылки в HTML

Здравствуйте, уважаемые читатели блога Goldbusinessnet.com. В продолжение статьи о создании гиперссылок рассмотрим, что они из себя представляют в абсолютном и относительном варианте.

В принципе, в той публикации досконально разобран механизм, позволяющий формировать линки (от английского слова «link», одно из значений которого интерпретируется как «ссылка») на базе URL-адреса в самом различном исполнении с помощью средств HTML с целью их размещения в веб-пространстве (включая и страницы сайтов) в качестве составляющей части контента.

Так как гиперссылка, которая неразрывно связана с гипертекстом (здесь определение hypertext), является частным случаем ссылки, то в ракурсе рассматриваемой нами темы эти термины можно считать тождественными. Поэтому в ходе повествования я буду применять оба этих понятия.

При использовании абсолютных и относительных линков, естественно, существуют свои нюансы, которые я сегодня постараюсь до вас донести в понятной и доступной форме.

Давайте, пойдем сначала. Основным отличительным признаком любой ссылки является наличие URL адреса, который чаще всего содержит абсолютный путь (полный) до страницы или файла:

http://site.ru/category1/single-page1
http://site.ru/catalog1/file1.html

В таком виде мы вводим урлы в поисковую строку браузера для получения доступа с объекту. При этом любой URL обязательно начинается с наименования протокола передачи данных и включает имя домена («http://site.ru/»). Именно в подобном виде путь до объекта (вебстраницы или файла) используется в качестве параметра атрибута href при создании абсолютной ссылки с помощью средств HTML для ее последующей вставки в контент заданной странички (документ):

<a href="http://site.ru/category1/single-page1">анкор</a>
<a href="http://site.ru/catalog1/file1.html">анкор</a>

Абсолютные гиперссылки можно теоретически использовать везде, но на практике их применяют чаще тогда, когда нужно сослаться на внешний веб-ресурс, а относительные более эффективны при переходах в пределах одного сайта, поскольку они короче и не загромождают HTML код.

Ежели представленный выше пример полного пути в URL-адресе немного модифицировать, убрав «http:», то как раз получится образец относительного пути:

//site.ru/category1/single-page1
//site.ru/catalog1/file1.html

Если же привлечь средства ХТМЛ, то можно создать ссылку относительно протокола:

<a href="//site.ru/category1/single-page1">анкор</a>
<a href="//site.ru/catalog1/file1.html">анкор</a>

Такой вариант вполне работает не только в пределах домена, но и на сторонних веб-страницах, причем, независимо от того, какой протокол (HTTP или HTTPS) установлен для конкретного сайта. Поэтому на практике данный вид относительных ссылкок с успехом можно применить, к примеру, в случае перевода веб-проекта на безопасный протокол HTTPS.

Пойдем далее и вдобавок к названию протокола уберем еще и двойной слеш вместе с доменным именем. Получится другая вариация относительного пути:

/category1/single-page1
/catalog1/file1.html

На его основе таким же образом создается относительная гиперссылка:

<a href="/category1/single-page1">анкор</a>
<a href="/catalog1/file1.html">анкор</a>

Возьмем для наглядности пример с файликом (file1.html). Такой линк будет работать только лишь в том случае, если файл расположен в папке (каталоге), которая, в свою очередь, находится в составе корневой директории вебсайта. То есть, в данном случае путь до файла (в составе URL, который служит параметром атрибута href) будет указан относительно корня веб-ресурса:

В соответствии с предоставленным выше скриншотом вы, полагаю, уже поняли следующее. Ежели файлик (в нашем примере file2.html) входит напрямую в состав корневой директории, то путь к нему относительно корня (site.ru) примет такой вид:

<a href="/file2.html">анкор</a>

Тут самый первый слеш «/» заменяет корневую папку «site.ru/». То есть, при создании перехода на главную страницу сайта с любой его страницы можно использовать короткую конструкцию:

<a href="/">анкор</a>

Тот же самый принцип работает и при проставлении линков с одной веб-страницы проекта на другую. Образцом может служить тот же блог WordPress, где есть главная страница, статические и привязанные к определенным рубрикам (категориям) вебстраницы записей.

Скажем, с абсолютно любой странички проекта можно проставить относительную ссылку на иную страницу с указанием рубрики. Возьмем для примера этот блог:

<a href="/osnovy-html/formy-v-html-tegi-form-input-atributy/">Формы</a>

А, скажем, относительная ссылка на статическую вебстраницу (которая не принадлежит ни одной рубрике, но входит в состав корневой папки «Goldbusinessnet.com») с любой другой странички в пределах одного проекта может выглядеть так:

<a href="/kontakty/">Контакты</a>

Итак, мы выяснили, что гиперлинки именно относительно корневой папки обычно и используются на практике, когда необходимо сослаться с одной страницы сайта на другую.

Теперь давайте рассмотрим еще несколько случаев создания линков относительно текущего веб-документа (файла или web-страницы), а не корня сайта. Здесь один из файлов будет донором (с которого проставлена ссылка), а другой акцептором (на который ведет гиперссылка).

1. Файлы расположены в одной папке:

В этом случае относительная ссылка будет содержать только лишь название документа, который является акцептором (обратите внимание, что знак слеша тут опущен, так как путь указывается не относительно корня, а вполне конкретной папки):

<a href="file2.html">анкор</a>

2. Файлы находятся в разных директориях, причем документ, на который необходимо сослаться, располагается внутри каталога, находящегося в одной папке, содержащей донор:

Тогда в процессе создания относительной гиперссылки в содержании донора следует прописать дополнительно директорию, где находится акцептор:

<a href="catalog2/file2.html">анкор</a>

Если целевой файл, на который указывает ссылка, находится еще на уровень ниже относительно донорского документа в иерархической структуре (к примеру, располагается в catalog3, который вложен в catalog2), то путь будет таким:

<a href="catalog2/catalog3/file3.html">текстовый фрагмент</a>

Ну и так далее, в зависимости от количества вложенных друг в друга директорий.

3. Теперь разберем обратную ситуацию, когда документ-акцептор располагается на уровень (или несколько) выше донорского файла:

При таком раскладе перед наименованием файлика необходимо поставить слэш «/» и двоеточие, означающее, что акцептор расположен на один уровень выше:

<a href="../file1.html">анкор</a>

Если документ, на который ссылаются, находится на целых два уровня выше (скажем, донорский документ пребывает в папке catalog3, которая вложена в catalog2), то HTML код относительной гиперссылки примет следующий вид:

<a href="../../file1.html">анкорный текст</a>

Как вы, наверное, поняли, подобных уровней может быть сколько угодно много, все зависит от файловой структуры вашего веб-проекта. Чем больше уровней между акцептором и донором, тем большее количество двоеточий и слэшей необходимо указать.

4. Есть еще вариант, когда акцептор и донор расположены в разных папках одного уровня:

Для того, чтобы сформировать относительный гиперлинк, нужно перейти на один уровень выше (catalog), а в пути указать директорию документа, на который будем ссылаться:

<a href="../catalog1/file1.html">анкорный текст</a>

5. Ну и теперь самый сложный случай. Это когда документ, содержащий относительную ссылочку, и файл, на который она ведет, располагаются в разных папках, причем директория с донором находится на один или несколько уровней выше папки с акцептором:

Если разница 1 уровень, то относительной ссылкой является такая:

<a href="../../catalog1/file1.html">анкорный текст</a>

Я привел только основные примеры относительных ссылок, на самом деле их гораздо больше. Но главное — понять суть алгоритма их создания, что, надеюсь, вам удалось. Тем более, что все другие вариации будут просто производными от выше указанных.

Ежели в качестве целевого объекта абсолютной или относительной ссылки указать не файл, а всю директорию, то в конце URL желательно прописывать слеш:

<a href="http://site.ru/wp-content/uploads/">text</a>
<a href="/wp-content/uploads/">anchor</a>

Тем самым вы указываете серверу, что необходимо открыть для просмотра весь каталог, а не конкретный файл. Если же опустить значок «/» и оформить гиперссылку вот так:

<a href="http://site.ru/wp-content/uploads">text</a>
<a href="/wp-content/uploads">anchor</a>

То серверный обработчик сначала начнет поиски файла «uploads», именно в таком виде (без расширения), а уже затем отыщет папку с таким именем. Посему, проставив сразу же слеш, вы сэкономите ресурсы сервера, на котором располагается сайт.

Также необходимо иметь ввиду, что в целях безопасности содержимое любого рабочего каталога сайта должно быть скрыто. Поэтому веб-сервер обычно сконфигурирован таким образом, чтобы воспрепятствовать отображению его файлов. Например, вместо этого может быть показан пустой индексный файл index.php либо index.html (в браузере это будет просто белая страница).

Я настоятельно рекомендую проверить, так ли обстоит дело на вашем сайте. Например, если у вас вебпроект под управлением Вордпресс, то изучите соответствующий материал, повествующий о базовых настройках защиты при использовании в том числе этого метода (правда, в современных версиях WP данная ситуация уже под контролем, но проверка не помешает).

В общем-то, принцип создания абсолютных и относительных ссылок действует и в отношении стандартных вебстраниц сайта. Но, поскольку львиная доля вебмастеров (особенно это касается владельцев полномасштабных веб-ресусов, а не простеньких дневников и одностраничников) использует для управления веб-ресурсом CMS, то здесь есть некоторые нюансы.

Что касается главной страницы, то абсолютная ссылка на нее включает доменное имя, которое является названием корневой папки в соответствии с файловой структурой сайта на сервере:

<a href="https://goldbusinessnet.com/">Home</a>

Образец относительного линка в отношении главной я уже приводил, но повторю еще раз:

<a href="/">Home</a>

Если вы желаете подробнее изучить нюансы применения адресов в относительных и абсолютных ссылках именно для всех страниц своего сайта, то почитайте соответствующий раздел статьи об урлах, где сможете, например, узнать, почему любой URL (со слешем или без в конце) является корректным в плане синтаксиса и полностью отвечает установленным стандартам.

Еще статьи по данной теме:
Самые интересные публикации из рубрики: Уроки HTML

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Чтобы ввести любой код, вставьте его между [php] и [/php]. Ссылка (URL), помещенная в текст комментария, не будет активной. C целью ее выделения и более удобного копирования можно заключить ее между тегами <pre> и </pre>.