1.3. Относительные, абсолютные и смешанные ссылки
Раздел 1. Вычисления в электронных таблицах > 1.3. Относительные, абсолютные и смешанные ссылки
|
Абсолютные и относительные ссылки в Excel
Абсолютные и относительные ссылки в Excel используются при создании формул, которые ссылаются на другую ячейку или диапазон. Если в формуле Excel используется знак доллара ($) в ссылках на ячейку, то многих пользователей Excel это путает. Но этот знак имеет простое объяснение – он обозначает, следует ли изменять или нет ссылку, когда формула копируется в другие ячейки, и в свою очередь информирует пользователя, что данная ссылка является абсолютной ссылкой. В данной статье мы подробно рассмотрим, как использовать данную возможность, чем отличаются относительные ссылки от абсолютных ссылок, и что такое смешанные ссылки.
Когда вы разберетесь в различии между абсолютными, относительными и смешанными ссылками, можно сказать, что вы на полпути к освоению мощности и универсальности формул и функций Excel.
Все вы, вероятно, видели знак доллара ($) в формулах Excel и задавались вопросом, что это такое. Действительно, вы можете ссылаться на одну и ту же ячейку четырьмя различными способами, например A1, $A$1, $A1 и A$1.
Если вам нужно написать формулу для одной ячейки, в которой необходимо сослаться на другую ячейку, то вы можете использовать любой тип ссылки и получить корректную формулу в любом случае. Но если вы намерены скопировать формулу в другие ячейки, выбор соответствующего типа ссылки ячейки имеет решающее значение. Поэтому необходимо потратить несколько минут на изучение того, когда использовать абсолютные, относительные и смешанные ссылки в Excel.
Что такое ссылка на ячейку?
Проще говоря, ссылка на ячейку в Excel является адресом ячейки. Он сообщает MS Excel, где искать значение, которое вы хотите использовать в формуле.
Например, если вы введете простую формулу =A1 в ячейку C1, Excel вытащит значение из ячейки A1 в C1:
Абсолютные и относительные ссылки в Excel – Ссылка на ячейку в Excel
Как уже упоминалось, если вы пишете формулу для одной ячейки, то вы можете использовать любой ссылочный тип, со знаком доллара(смешанная или абсолютная ссылка) или без него (относительная ссылка), результат будет таким же:
Абсолютные и относительные ссылки в Excel – Использование $ в формулах Excel
Но если вы хотите переместить или скопировать формулу на листе, очень важно, чтобы вы выбрали правильный ссылочный тип, чтобы формула правильно копировалась в другие ячейки. В следующих пунктах приведены подробные объяснения и примеры формул для каждого ссылочного типа ячейки.
Относительная ссылка в Excel
Относительная ссылка – это обычная ссылка, которая содержит в себе букву (столбец) и номер (строка) без знака $, например, D14, G5, A3 и т.п. Основная особенность относительных ссылок заключается в том, что при копировании (заполнении) ячеек в электронной таблице, формулы, которые в них находятся, меняют адрес ячеек относительно нового места. По умолчанию все ссылки в Excel являются относительными ссылками. В следующем примере показано, как работают относительные ссылки.
Предположим, что у вас есть следующая формула в ячейке B1:
= A1*10
Если вы скопируете эту формулу в другую строку в том же столбце, например, в ячейку B2, формула будет корректироваться для строки 2 (A2*10), потому что Excel предполагает, что вы хотите умножить значение в каждой строке столбца А на 10.
Абсолютные и относительные ссылки в Excel – Относительная ссылка в Excel
Если вы копируете формулу с относительной ссылкой на ячейку в другой столбец в той же строке, Excel соответственно изменит ссылку на столбец:
Абсолютные и относительные ссылки в Excel – Копирование формулы с относительной ссылкой в другой столбец
При перемещении или копировании формулы с относительной ссылкой на ячейку в другую строку и другой столбец, ссылка изменится как на столбец так и на строку:
Абсолютные и относительные ссылки в Excel – Копирование формулы с относительной ссылкой в другой столбец и другую строку
Как вы видите, использование относительных ссылок на ячейки в формулах Excel является очень удобным способом выполнения одних и тех же вычислений на всем рабочем листе. Чтобы лучше проиллюстрировать это, давайте рассмотрим конкретный пример относительной ссылки.
Пример относительных ссылок в Excel
Пусть у нас есть электронная таблица, в которой отражены наименование, цена, количество и стоимость товаров.
Абсолютные и относительные ссылки в Excel – Исходные данные
Нам нужно рассчитать стоимость для каждого товара. В ячейке D2 введем формулу, в которой перемножим цену товара А и количество проданных единиц. Формула в ячейке D2 ссылается на ячейку B2 и C2, которые являются относительными ссылками. При перетаскивании маркера заполнения вниз на ячейки, которые необходимо заполнить, формула автоматически изменяется.
Абсолютные и относительные ссылки в Excel – Относительные ссылки
Ниже представлены расчеты с наглядными формулами относительных ссылок.
Абсолютные и относительные ссылки в Excel – Относительные ссылки (режим формул)
Таким образом,относительная ссылка в Excel — это ссылка на ячейку, когда при копировании и переносе формул в другое место, в формулах меняется адрес ячеек относительно нового места.
Абсолютная ссылка в Excel
Абсолютные ссылки используются в противоположной ситуации, то есть когда ссылка на ячейку должна остаться неизменной при заполнении или копировании ячеек. Абсолютная ссылка обозначается знаком $ в координатах строки и столбца, например $A$1.
Знак доллара фиксирует ссылку на данную ячейку, так что она остается неизменной независимо от того, куда смещается формула. Другими словами, использование $ в ссылках ячейках позволяет скопировать формулу в Excel без изменения ссылок.
Абсолютные и относительные ссылки в Excel – Абсолютная ссылка в Excel
Например, если у вас есть значение 10 в ячейке A1, и вы используете абсолютную ссылку на ячейку ($A$1), формула = $A$1+5 всегда будет возвращать число 15, независимо от того, в какие ячейки копируется формула. С другой стороны, если вы пишете ту же формулу с относительной ссылкой на ячейку (A1), а затем скопируете ее в другие ячейки в столбце, для каждой строки будет вычисляться другое значение. Следующее изображение демонстрирует разницу абсолютных и относительных ссылок в MS Excel:
Абсолютные и относительные ссылки в Excel – Разница между абсолютными и относительными ссылками в Excel
В реальной жизни вы очень редко будете использовать только абсолютные ссылки в формулах Excel. Тем не менее, существует множество задач, требующих использования как абсолютных ссылок, так и относительных ссылок, как показано в следующем примере.
Пример использования абсолютной и относительных ссылок в Excel
Пусть в рассматриваемой выше электронной таблице необходимо дополнительно рассчитать десятипроцентную скидку. В ячейке Е2 вводим формулу =D2*(1-$H$1). Ссылка на ячейку $H$1 является абсолютной ссылкой на ячейку, и она не будет изменяться при заполнении других ячеек.
Абсолютные и относительные ссылки в Excel – Абсолютная ссылка
Для того чтобы сделать абсолютную ссылку из относительной ссылки, выделите ее в формуле и несколько раз нажмите клавишу F4 пока не появиться нужное сочетание. Все возможные варианты будут появляться по циклу:
Абсолютные и относительные ссылки в Excel – Переключение между относительной, абсолютной ссылкой и смешанными ссылками
Или вы можете
Если вы используете Excel for Mac, то для преобразования относительной в абсолютную ссылку или в смешанные ссылки используйте сочетание клавиш COMMAND+T.
Абсолютные и относительные ссылки в Excel – Абсолютная ссылка (режим формул)
Таким образом в отличии от относительных ссылок, абсолютные ссылки не изменяются при копировании или заполнении. Абсолютные ссылки используются, когда нужно сохранить неизменными строку и столбец ячеек.
Смешанные ссылки в Excel
Смешанные ссылки используют, когда необходимо закрепить адрес ячейки только по строке или только по столбцу. Смешанные ссылки могут быть абсолютными по столбцу и относительными по строке (например, $A1), или относительными по столбцу и абсолютными по строке (например, A$1).
Как вы помните, абсолютная ссылка в Excel содержит 2 знака доллара ($), которые блокируют как столбец, так и строку.
В смешанной ссылке фиксируется только одна координата (абсолютная), а другая (относительная) изменяется в зависимости от относительного положения строки или столбца:- Абсолютный столбец и относительная строка, например $A1. Когда формула со смешанной ссылкой копируется в другие ячейки, знак $ перед буквой столбца блокирует ссылку на указанный столбец, чтобы он никогда не менялся. Ссылка относительной строки, без знака доллара, изменяется в зависимости от строки, в которую копируется формула.
- Относительный столбец и абсолютная строка, например A$1. В этой смешанной ссылке ссылка на строку не изменится, а ссылка на столбец будет меняться.
Абсолютные и относительные ссылки в Excel – Смешанные ссылки
Ниже вы представлен пример использования обоих типов смешанных ссылок.
Пример смешанных ссылок в Excel
Если нам нужно узнать какая будет стоимость с учетом 10%, 25% и 30% скидки, то в ячейку Е3 вводим формулу =$D3*(1-E$2), фиксируя таким образом столбец D (стоимость) и строку 2 (скидку). В данной формуле используются две смешанные ссылки:
$D3 — Абсолютный столбец и относительная строка
E$2 — Относительный столбец и абсолютная строка
Абсолютные и относительные ссылки в Excel – Пример использования смешанных ссылок
Заполняем ячейки по столбцам и по строкам. В режиме формул расчеты со смешанными ссылками будут выглядеть так:
Абсолютные и относительные ссылки в Excel – Пример использования смешанных ссылок (режим формул)
При заполнении диапазона E3:G6 такая формула со смешанными ссылками дает соответствующие значения в каждой ячейке.
Таким образом, абсолютная ссылка на ячейку при копировании или перемещении формулы не изменяется, а относительная ссылка автоматически перенастраивается на новую ячейку. В смешанной ссылке адрес ячейки закрепляют только либо по строке, либо по столбцу. Надеюсь, теперь вы в полной мере разобрались, что такое относительные и абсолютные ссылки на ячейки, а формула Excel с знаками $ больше не является для вас загадкой.
Абсолютные и относительные URL-адреса — объекты данных ActiveX (ADO)
- Статья
-
- 3 минуты на чтение
URL-адрес указывает местоположение цели, хранящейся на локальном или сетевом компьютере. Целью может быть файл, каталог, HTML-страница, изображение, программа и т. д.
Абсолютный URL-адрес содержит всю информацию, необходимую для поиска ресурса.
Относительный URL-адрес находит ресурс, используя абсолютный URL-адрес в качестве отправной точки. По сути, «полный URL-адрес» цели определяется путем объединения абсолютного и относительного URL-адресов.
Абсолютный URL-адрес использует следующий формат: схема://сервер/путь/ресурс
Относительный URL-адрес обычно состоит только из пути и, необязательно, ресурс , но нет схемы или сервера . В следующих таблицах определяются отдельные части полного формата URL.
схема
Указывает способ доступа к ресурсу .
сервер
Указывает имя компьютера, на котором находится ресурс .
путь
Указывает последовательность каталогов, ведущих к цели. Если ресурс опущен, целью является последний каталог в путь .
ресурс
Если включен, ресурс является целью и обычно является именем файла. Это может быть простой файл, содержащий один двоичный поток байтов, или структурированный документ, содержащий одно или несколько хранилищ и двоичных потоков байтов.
Регистрация схемы URL-адресов
Если провайдер поддерживает URL-адреса, он зарегистрирует одну или несколько схем URL-адресов. Регистрация означает, что любые URL-адреса, использующие схему, будут автоматически вызывать зарегистрированного провайдера. Например, 9Схема 0017 http зарегистрирована в поставщике Microsoft OLE DB для публикации в Интернете. ADO предполагает, что все URL-адреса с префиксом «http» представляют собой веб-папки или файлы, которые будут использоваться с поставщиком интернет-публикаций. Для получения информации о схемах, зарегистрированных вашим провайдером, см. документацию вашего провайдера.
Определение контекста с помощью URL-адреса
Одной из функций открытого соединения, представленного объектом Connection, является ограничение последующих операций источником данных, представленным этим соединением. То есть соединение определяет контекст для последующих операций.
В ADO 2.7 или более поздней версии абсолютный URL-адрес также может определять контекст. Например, когда объект Record открывается с абсолютным URL-адресом, неявно создается объект Connection для представления ресурса, указанного URL-адресом.
Абсолютный URL-адрес, определяющий контекст, можно указать в параметре ActiveConnection метода Record Open объекта. Абсолютный URL также может быть указан как значение ключевого слова «URL=» в Connection 9. 0086 объект Open метод ConnectionString параметр и объект Recordset Open метод параметр ActiveConnection .
Контекст также можно определить, открыв объект Record или Recordset , представляющий каталог, так как эти объекты уже имеют явно или неявно объявленный объект Connection , задающий контекст.
Операции с областью действия
Контекст также определяет область действия, то есть каталог и его подкаталоги, которые могут участвовать в последующих операциях. Объект Record имеет несколько методов с областью действия, которые работают с каталогом и всеми его подкаталогами. Эти методы включают CopyRecord, MoveRecord и DeleteRecord.
Относительные URL-адреса в виде текста команды
Вы можете указать команду, которая будет выполняться в источнике данных, введя строку в параметре CommandText метода Connection объекта Execute и в параметре Source Метод Open объекта Recordset .
Относительный URL-адрес можно указать в параметре CommandText или Source . Относительный URL-адрес на самом деле не представляет команду, например команду SQL; он просто указывает параметры. Контекст активного подключения должен быть абсолютным URL-адресом, а для параметра Option должно быть установлено значение adCmdTableDirect .
Например, в следующем примере кода показано, как открыть набор записей в файле Readme25.txt каталога Winnt/system32:
набор записей. Откройте "system32/Readme25.txt", "URL=https://YourServer/Winnt/", adCmdTableDirect
Абсолютный URL-адрес в строке подключения указывает сервер ( YourServer
) и путь ( Winnt
). Этот URL также определяет контекст.
Относительный URL-адрес в тексте команды использует абсолютный URL-адрес в качестве отправной точки и указывает оставшуюся часть пути ( system32
) и файл для открытия ( Readme25. txt
).
Поле опций ( adCmdTableDirect
) указывает, что тип команды является относительным URL-адресом.
В качестве другого примера следующий код откроет набор записей в содержимом каталога Winnt
:
набор записей.
Схемы URL-адресов, предоставленные поставщиком OLE DB
Начальной частью полного URL-адреса является схема , которая используется для доступа к ресурсу, указанному в оставшейся части URL-адреса. Примерами являются HTTP (протокол передачи гипертекста) и FTP (протокол передачи файлов).
ADO поддерживает поставщиков OLE DB, которые распознают собственные схемы URL-адресов. Например, Microsoft OLE DB Provider for Internet Publishing , , который обращается к «опубликованным» файлам Windows 2000, распознает существующую схему HTTP.
См. также
Объект подключения (ADO)
Объект записи (ADO)
Объект набора записей (ADO)
HTML — абсолютные и относительные URL-адреса
Задавать вопрос
спросил
Изменено 8 месяцев назад
Просмотрено 363 тыс.
Я хотел бы знать разницу между этими двумя типами URL-адресов: относительными URL-адресами (для изображений, файлов CSS, JS-файлов и т. д.) и абсолютными URL-адресами.
Кроме того, какой лучше использовать?
- html
- URL-адрес
- относительный URL-адрес
1
Должен ли я использовать абсолютные или относительные URL-адреса?
Если под абсолютными URL-адресами вы подразумеваете URL-адреса, включая схему (например, HTTP / HTTPS) и имя хоста (например, yourdomain.example
), никогда не делайте этого (для локальных ресурсов), потому что это будет ужасно поддерживать и отлаживать.
Допустим, вы использовали абсолютный URL-адрес везде в своем коде, например
. Теперь что произойдет, когда вы собираетесь:
- переключиться на другую схему (например, HTTP -> HTTPS)
- переключение доменных имен (
test. yourdomain.example
->yourdomain.example
)
В первом примере вы получите предупреждения о небезопасном содержимом, запрашиваемом на странице. Потому что все ваши URL-адреса жестко закодированы для использования http(://yourdomain.example/images/example.png). И при запуске ваших страниц через HTTPS браузер ожидает, что все ресурсы будут загружены через HTTPS, чтобы предотвратить утечку информации.
Во втором примере при запуске вашего сайта из тестовой среды это будет означать, что все ресурсы по-прежнему указывают на ваш тестовый домен, а не на рабочий домен.
Итак, чтобы ответить на ваш вопрос о том, использовать ли абсолютные или относительные URL-адреса: всегда используйте относительные URL-адреса (для локальных ресурсов).
В чем разница между разными URL-адресами?
Сначала давайте рассмотрим различные типы URL-адресов, которые мы можем использовать:
-
http://yourdomain.example/images/example. png
-
//вашдомен.пример/изображения/пример.png
-
/images/example.png
-
изображения/пример.png
К каким ресурсам на сервере пытаются получить доступ эти URL-адреса?
В приведенных ниже примерах я предполагаю, что веб-сайт работает из следующего места на сервере /var/www/mywebsite
.
http://yourdomain.example/images/example.png
Приведенный выше (абсолютный) URL пытается получить доступ к ресурсу /var/www/website/images/example.png
. Этот тип URL — это то, что вы всегда хотели бы избегать для запроса ресурсов с вашего собственного веб-сайта по причине, изложенной выше. Однако он имеет место быть. Например, если у вас есть веб-сайт http://yourdomain.example
и вы хотите запросить ресурс с внешнего домена по HTTPS, вы должны использовать это. Например. https://externalsite.example/path/to/image. png
.
//yourdomain.example/images/example.png
Этот URL-адрес является относительным на основе текущей используемой схемы и почти всегда должен использоваться при включении внешних ресурсов (изображений, javascripts и т. д.).
Этот тип URL-адреса использует текущую схему страницы, на которой он находится. Это означает, что вы находитесь на странице http://yourdomain.example
и на этой странице есть тег изображения
URL изображения разрешится в http://yourdomain.example/images/example.png
.
Когда вы были бы на странице http s ://yourdomain.example и на этой странице есть тег изображения
URL-адрес изображение разрешится в https://yourdomain.example/images/example.png
.
Это предотвращает загрузку ресурсов через HTTPS, когда они не нужны, и автоматически гарантирует, что ресурс запрашивается через HTTPS, когда он необходим.
Приведенный выше URL-адрес разрешается на стороне сервера таким же образом, как и предыдущий URL-адрес:
Приведенный выше (абсолютный) URL-адрес пытается получить доступ к ресурсу
/var/www/website/images/example.png
.
/images/example.png
Для локальных ресурсов это предпочтительный способ ссылки на них. Это относительный URL-адрес, основанный на корневом каталоге документа ( /var/www/mywebsite
) вашего веб-сайта. Это означает, что когда у вас есть
, всегда будет разрешаться в /var/www/mywebsite/images/example.png
.
Если в какой-то момент вы решите сменить домен, он все равно будет работать, потому что он относительный.
images/example.png
Это тоже относительный URL, хотя и немного отличается от предыдущего. Этот URL относится к текущему пути. Это означает, что он будет разрешаться по разным путям в зависимости от того, где вы находитесь на сайте.
Например, когда вы находитесь на странице http://yourdomain.example
и используете
на сервере будет разрешено /var/www/mywebsite/images/example.png
, как и ожидалось, однако, когда вы находитесь на странице http:// yourdomain.example/some/path
, и вы используете точно такой же тег изображения, который внезапно преобразуется в /var/www/mywebsite/some/path/images/example.png
.
Когда что использовать?
При запросе внешних ресурсов вы, скорее всего, захотите использовать URL-адрес, относящийся к схеме (если вы не хотите использовать другую схему), а при работе с локальными ресурсами вы хотите использовать относительные URL-адреса на основе корня документа.
Пример документа:
<голова>Пример googleapis.com/css?family=Lato:300italic,700italic,300,700' rel='stylesheet' type='text/css'> голова> <тело> тело>
Некоторые (своего рода) дубликаты
- Безопасный способ написания URL-адресов, которые передаются между средами
- как правильно разместить ссылку на изображение на сайте?
12
Как правило, рекомендуется использовать относительные URL-адреса, чтобы ваш веб-сайт не был привязан к базовому URL-адресу того места, где он развернут в данный момент. Например, он сможет работать как на локальном хосте, так и на вашем публичном домене без модификаций.
13
См. это: http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
foo://username:[email protected]:8042/over/there/index.dtb;type=animal?name= хорек#нос \ / \________________/\_________/ \__/ \___/ \_/ \_________/ \_________/ \__/ | | | | | | | | | | userinfo имя хоста порт | | фрагмент запроса параметра | \_______________________________/ \_______|____|____________/ схема | | | | | авторитет |путь| | | | | путь, интерпретируемый как имя файла | ___________|____________ | / \ / \ | urn:example:animal:ferret:nose можно интерпретировать как расширение
Абсолютный URL-адрес включает части, предшествующие части «путь», другими словами, он включает схему ( http
в http://foo/bar/baz
) и имя хоста ( foo
в http://foo/bar/baz
) (и необязательно порт, информация о пользователе и порт).
Относительные URL-адреса начинаются с пути.
Абсолютные URL-адреса являются абсолютными: местоположение ресурса можно определить, глядя только на сам URL-адрес. Относительный URL-адрес в некотором смысле неполный: для его разрешения вам нужна схема и имя хоста, и они обычно берутся из текущего контекста. Например, на веб-странице в
http://myhost/mypath/myresource1.html
вы можете поставить ссылку вот так
нажмите на меня
В атрибуте href
ссылки используются относительные URL-адреса, и если по нему щелкнули, он должен быть разрешен, чтобы перейти по нему. В этом случае текущий контекст —
http://myhost/mypath/myresource1.html.
, поэтому схема, имя хоста и ведущий путь к ним берутся и добавляются к страницам/странице1
, что дает
http://myhost/mypath/pages/page1
Если бы ссылка была:
нажмите на меня
(обратите внимание на /
в начале URL-адреса), тогда он был бы разрешен как
http://myhost/pages/page1
, потому что начальные /
указывают на корень хоста.
В веб-приложении я бы посоветовал использовать относительные URL-адреса для всех ресурсов, принадлежащих вашему приложению. Таким образом, если вы измените расположение страниц, все будет продолжать работать. Любые внешние ресурсы (это могут быть страницы, полностью находящиеся за пределами вашего приложения, а также статический контент, который вы доставляете через сеть доставки контента) всегда должны указываться с использованием абсолютных URL-адресов: если вы этого не сделаете, их просто невозможно найти, потому что они находиться на другом сервере.
3
Предположим, мы создаем дочерний сайт, файлы которого находятся в папке http://site.ru/shop.
1. Абсолютный URL
Ссылка на домашнюю страницу href="http://sites.ru/shop/" Ссылка на страницу продукта href="http://sites.ru/shop/t-shirts/t-shirt-life-is-good/"
2. Относительный URL
Ссылка с домашней страницы на страницу продукта href="футболки/футболка-жизнь-это-хорошо/" Ссылка со страницы продукта на главную страницу href=". ./../"
Хотя относительный URL выглядит короче абсолютного, но абсолютные URL предпочтительнее, так как ссылку можно использовать без изменений на любой странице сайта.
Промежуточные случаи
Мы рассмотрели два крайних случая: «абсолютно» абсолютные и «абсолютно» относительные URL-адреса. Но все относительно в этом мире. Это также относится к URL-адресам. Каждый раз, когда вы говорите об абсолютном URL, вы всегда должны указывать относительно чего.
3. URL-адрес, относящийся к протоколу
Ссылка на домашнюю страницу href="//sites.ru/shop/" Ссылка на страницу продукта href="//sites.ru/shop/t-shirts/t-shirt-life-is-good/"
Google рекомендует такой URL. Однако сейчас принято считать, что http:// и https:// — это разные сайты.
4. Корневой URL-адрес
Т.е. относительно корневой папки домена.
Ссылка на домашнюю страницу href="/магазин/" Ссылка на страницу продукта href="/shop/t-shirts/t-shirt-life-is-good/"
Это хороший выбор, если все страницы находятся в одном домене. Когда вы перемещаете свой сайт на другой домен, вам не нужно делать массовые замены доменного имени в URL-адресах.
5. Базовый относительный URL-адрес (относительный домашней страницы)
Тег
Ссылка на домашнюю страницу href="" Ссылка на страницу продукта href="футболки/футболка-жизнь-это-хорошо/"
Теперь вы можете перенести свой сайт не только на любой домен, но и в любую подпапку. Просто имейте в виду, что хотя URL-адреса выглядят относительными, на самом деле они абсолютны. Особенно обратите внимание на якоря. Чтобы перемещаться по текущей странице, мы должны писать href=»t-shirts/t-shirt-life-is-good/#comments», а не href=»#comments». Последний кинет на главную страницу.
Заключение
Для внутренних ссылок я использую относительные URL-адреса (5). Для внешних ссылок и информационных бюллетеней я использую абсолютные URL-адреса (1).
1
На самом деле существует три типа, которые следует обсудить подробно. На практике URL-адреса были абстрагированы для обработки на более низком уровне, и я бы даже сказал, что разработчики могут прожить всю свою жизнь, не написав ни одного URL-адреса вручную.
Абсолют
Абсолютные URL-адреса привязывают ваш код к протоколу и домену. Это можно преодолеть с помощью динамических URL-адресов.
https://dev.example.com/a.html?q=
Абсолютные плюсы:
Контроль — Поддомен и протокол можно контролировать. Люди, которые входят через малоизвестный поддомен, будут перенаправлены в правильный поддомен. Вы можете переключаться между безопасным и небезопасным по мере необходимости.
Конфигурируемый — Разработчики любят, чтобы вещи были абсолютными. Вы можете разработать аккуратные алгоритмы при использовании абсолютных URL-адресов. URL-адреса можно настроить так, чтобы URL-адрес можно было обновлять для всего сайта с помощью одного изменения в одном файле конфигурации.
Ясновидение — Вы можете искать людей, просматривающих ваш сайт, или, возможно, получить дополнительные внешние ссылки.
Корневой относительный
Корневой относительный URL-адреса связывают ваш код с базовым URL-адресом. Это можно преодолеть с помощью динамических URL-адресов и/или базовых тегов.
.example.com/index.php?q=
Относительный корень Плюсы:
- Конфигурируемый — Базовый тег делает их относительными к любому выбранному вами корню, что упрощает переключение доменов и внедрение шаблонов.
Относительный
Относительные URL-адреса связывают ваш код со структурой каталогов. Преодолеть это невозможно. Относительные URL-адреса полезны только в файловых системах для перемещения по каталогам или в качестве ярлыка для черной задачи.
index.php?q=
Относительные минусы:
ЗАБЛУЖДЕНИЕ — Сколько точек? это сколько папок? Где файл? Почему это не работает?
ОБСЛУЖИВАНИЕ — Если файл случайно перемещен, ресурсы перестают загружаться, ссылки отправляют пользователя на неправильные страницы, данные формы могут быть отправлены на неправильную страницу. Если файл НЕОБХОДИМО переместить, все ресурсы, которые перестанут загружаться, и все ссылки, которые будут неверными, должны быть обновлены.
НЕ МАСШТАБИРУЕТСЯ — Когда веб-страницы становятся более сложными и представления начинают повторно использоваться на нескольких страницах, относительные ссылки будут относиться к файлу, в который они были включены. Если у вас есть навигационный фрагмент HTML, который будет на каждой странице, то относительный будет относительным во многих разных местах. Первое, что люди понимают, когда начинают создавать шаблон, это то, что им нужен способ управления URL-адресами.
ВЫЧИСЛЕНО — Они реализованы вашим браузером (надеюсь, в соответствии с RFC). См. главу 5 в RFC3986.
Ой! — Ошибки или опечатки могут привести к ловушке для пауков.
Эволюция маршрутов
Разработчики перестали писать URL-адреса в обсуждаемом здесь смысле. Все запросы относятся к индексному файлу веб-сайта и содержат строку запроса, также известную как маршрут. Маршрут можно рассматривать как мини-URL, который сообщает вашему приложению, какой контент необходимо сгенерировать.
http://dev.example.com/index.php/my:whacky:url
Маршруты Плюсы:
- Все преимущества абсолютных URL.
- Использование любого символа в URL.
- Больше контроля (хорошо для SEO).
- Возможность алгоритмически генерировать URL-адреса. Это позволяет настраивать URL-адреса. Изменение URL-адреса — это одно изменение в одном файле.
- Не нужно 404 не нашел. Запасные маршруты могут отображать карту сайта или страницу ошибки.
- Удобная защита от непрямого доступа к файлам приложений. Охранные заявления могут убедиться, что все прибывают по надлежащим каналам.
- Практичность подхода MVC.
My Take
Большинство людей так или иначе используют все три формы в своих проектах. Главное — понять их и выбрать тот, который лучше всего подходит для задачи.
6
Мне придется не согласиться с большинством здесь.
Я думаю, что схема относительных URL-адресов «хороша», когда вы хотите быстро запустить что-то и не мыслить нестандартно, особенно если ваш проект небольшой с несколькими разработчиками (или только вы сами).
Однако, как только вы начинаете работать с большими, жирными системами, где вы постоянно переключаете домены и протоколы, я считаю, что вам нужен более элегантный подход.
Когда вы сравниваете абсолютные и относительные URL-адреса по существу, абсолютный выигрывает. Почему? Потому что он никогда не сломается. Всегда. Абсолютный URL-адрес — это именно то, что он говорит. Загвоздка в том, что вам нужно ПОДДЕРЖИВАТЬ свои абсолютные URL-адреса.
Слабый подход к абсолютной привязке URL-адресов заключается в жестком кодировании всего URL-адреса. Не лучшая идея и, вероятно, причина того, почему люди считают их опасными/злыми/раздражающими в обслуживании. Лучший подход — написать самому простой в использовании генератор URL. Их легко написать, и их может быть невероятно мощный — автоматически определяет ваш протокол, прост в настройке (буквально устанавливает URL-адрес один раз для всего приложения) и т. д., и он сам внедряет ваш домен. Хорошая вещь в этом: вы продолжаете кодировать, используя относительные URL-адреса, и во время выполнения приложение вставляет ваши URL-адреса как полные абсолютные значения на лету. Потрясающий.
Учитывая то, что практически все современные сайты используют какой-либо вид динамической серверной части, в интересах указанного сайта сделать это таким образом. Абсолютные URL-адреса делают больше, чем просто дают вам уверенность в том, куда они указывают, они также могут улучшить эффективность SEO.
Я мог бы добавить, что аргумент о том, что абсолютные URL-адреса каким-то образом изменяют время загрузки страницы, является мифом. Конечно, если ваш домен весит больше нескольких байт и вы пользуетесь коммутируемым модемом 1980-х годов. Но это уже не так. https://stackoverflow.com/ составляет 25 байт, тогда как файл «topbar-sprite.png», который они используют для области навигации сайта, весит более 9 КБ. Это означает, что дополнительные данные URL составляют 0,2% загруженных данных по сравнению с файлом спрайта, и этот файл даже не считается большим ударом по производительности.
Это большое неоптимизированное фоновое изображение на всю страницу с большей вероятностью замедлит время загрузки.
Интересный пост о том, почему нельзя использовать относительные URL-адреса, находится здесь: Почему относительные URL-адреса должны быть запрещены для веб-разработчиков
Проблема, которая может возникнуть, например, с относительными URL-адресами, заключается в том, что иногда сопоставления серверов (заметьте, в больших, запутанных проектах) не совпадают с именами файлов, и разработчик может сделать предположение об относительном URL-адресе, которое просто неверно. Я только что увидел это сегодня в проекте, над которым я работаю, и это закрыло целую страницу.
Или, возможно, разработчик забыл переключить указатель, и Google внезапно проиндексировал всю вашу тестовую среду. К сожалению, дублированный контент (плохо для SEO!).
Абсолюты могут быть опасны, но при правильном использовании и таким образом, что не может сломать вашу сборку , они оказались более надежными. Взгляните на статью выше, в которой приводится множество причин, по которым генератор URL-адресов WordPress является суперкрутым.
🙂
9
Если он предназначен для использования на вашем веб-сайте, лучше использовать относительный URL-адрес, например, если вам нужно переместить веб-сайт на другое доменное имя или просто выполнить локальную отладку, вы можете это сделать.
Посмотрите, что делает stackoverflow (ctrl+U в firefox):
// Ссылка на внутренний элемент
В некоторых случаях используются абсолютные URL-адреса:
… но это всего лишь лучший способ повысить скорость. В вашем случае не похоже, что вы делаете что-то подобное, поэтому я бы не беспокоился об этом.
В большинстве случаев относительные URL-адреса — это то, что нужно, они переносимы по своей природе, что означает, что если вы хотите поднять свой сайт и разместить его где-нибудь еще, он будет работать мгновенно, что, возможно, сократит часы отладки.
Существует довольно приличная статья об абсолютных и относительных URL-адресах, прочтите ее.
URL-адрес, начинающийся со схемы URL и конкретной части схемы ( http://
, https://
, ftp://
и т. д.) является абсолютным URL-адресом.
Любой другой URL-адрес является относительным URL-адресом и нуждается в базовом URL-адресе, из которого разрешается относительный URL-адрес (и, следовательно, зависит от него), который является URL-адресом ресурса, в котором используется ссылка, если не указано иное.
Взгляните на RFC 2396 — Приложение C, где приведены примеры разрешения относительных URL-адресов.
Допустим, у вас есть сайт www.yourserver.example
. В корневом каталоге для веб-документов у вас есть подкаталог изображений, в котором у вас есть myimage.jpg.
Абсолютный URL-адрес определяет точное местоположение документа, например:
http://www.yourserver.example/images/myimage.jpg
Относительный URL-адрес определяет местоположение относительно текущего каталога , например, если вы находитесь в корневом веб-каталоге, в котором находится ваше изображение:
images/myimage. jpg
(относительно этого корневого каталога)
По возможности всегда следует использовать относительные URL-адреса. Если вы переместите сайт на www.anotherserver.com, вам придется обновить все абсолютные URL-адреса, которые указывали на 9.0143 www.yourserver.example , относительные будут продолжать работать как есть.
Для каждой системы, поддерживающей разрешение относительного URI, как относительные, так и абсолютные URI служат одной цели: созданию ссылок. И их можно использовать взаимозаменяемо. Таким образом, вы можете решить в каждый случай по-разному. Технически они предоставляют ту же самую ссылку .
Чтобы быть точным, с каждым относительным URI уже есть абсолютный URI. И это базовый URI, с которым разрешается относительный URI. Таким образом, относительный URI на самом деле является функцией поверх абсолютных URI.
И именно поэтому с относительными URI вы можете сделать на больше , чем с одним абсолютным URI — это особенно важно для статических веб-сайтов, которые в противном случае не могут быть такими гибкими в обслуживании по сравнению с абсолютными URI.
Эти положительные эффекты относительного разрешения URI также можно использовать для динамической разработки веб-приложений. Негибкие абсолютные URI также легче справляться в динамической среде, поэтому некоторые разработчики, которые не уверены в разрешении URI и в том, как его правильно реализовать и управлять им (не то чтобы это всегда легко), часто предпочитают использовать абсолютный URI в динамической части веб-сайта, поскольку они могут вводить другие динамические функции (например, переменная конфигурации, содержащая префикс URI), чтобы обойти негибкость.
Так в чем тогда преимущество использования абсолютных URI? Технически их нет, но я бы сказал одно: относительные URI более сложны, потому что их нужно разрешать относительно так называемого абсолютного базового URI. Даже если разрешение строго определено годами, вы можете столкнуться с клиентом, у которого есть ошибка в разрешении URI. Поскольку абсолютные URI не нуждаются в каком-либо разрешении, использование абсолютных URI не сопряжено с риском возникновения ошибочного поведения клиента при разрешении относительного URI.