Url путь: Что такое URL адрес и как с ним работать

Содержание

HTML/URL-адрес

Описание

URL-адрес (от англ. «Uniform Resource Locator» ‒ «Универсальный Указатель Ресурсов»; от англ. «Uniform Resource Locator» ‒ «Унифицированный Указатель Ресурсов») это указатель расположения ресурса.

URL-адреса могут быть абсолютными и относительными.

  • К абсолютным URL-адресам относят адреса, содержащие в себе полный путь к файлу, то есь путь от корневой директории до файла.
    http://example.su/
    http://example.su/index.html
    http://example.su/path/to/file/index.html
    /path/to/file/index.html
  • К относительным URL-адресам относят адреса, интерпретируемые относительно положения текущего документа. Выделяют следующие переходы:
    1. переход на верхние уровни, то есть переход в родительские каталоги.
      <!-- переход на 1 уровень вверх к файлу «index.html» -->
      ../index.html 
      
      <!-- переход на 2 уровня вверх к файлу «example.html» -->
      ../../example.html
    2. переходы на одном уровне, то есть в рамках одного каталога.
      <!-- переход к файлу «index.html», расположенном в том же каталоге -->
      
      ./index.html
      
      ... или ...
      
        index.html
    3. переход на нижние уровни, то есть переход в дочерние каталоги.
      <!-- переход на 1 уровень вниз к файлу «index.html» -->
      ./folder1/index.html
       ... или ... 
        folder1/index.html
      
      <!-- переход на 2 уровня вниз к файлу «example.html» -->
      ./folder1/folder2/example.html
       ... или ... 
        folder1/folder2/example.html

Условия использования

Все «&» символы, используемые во всех URL-адресах в (X)HTML документе должны быть заменены на соответствующие символьные ссылки («&amp;»).

Описание путей: абсолютных, относительных, UNC и URL—Справка

Вы сталкиваетесь с путями каждый день для поиска ваших данных и наборов инструментов. В этом разделе представлено детальное описание путей, приведено определение различных видов путей и показан порядок работы с ними в ArcGIS.

пути

Путь (Path)

Путь – это разделенное символами обратной косой черты имя директории или файла. Директория – это тоже самое, что и папка в проводнике Windows.

E:\Data\MyStuff            (path terminating in a directory name)
E:\Data\MyStuff\roads.shp  (path terminating in a file name)

путь

Вы можете столкнуться с двумя написаниями пути: «pathname» и «path name». Все варианты написания пути (Path, pathname и path name) являются синонимами.

Системный путь и путь каталога

ArcGIS оперирует термином «путь каталога» или «путь ArcCatalog». Путь каталога – это путь, распознаваемый только ArcGIS. Например:

D:\Data\Final\Infrastructure.gdb\EastValley\powerlines

относится к классу пространственных объектов powerlines в наборе объектов EastValley файловой базы геоданных Infrastructure. Этот путь не является корректным системным путем с точки зрения операционной системы, поскольку Windows не распознает наборы и классы пространственных данных, расположенные внутри файловой базы геоданных. Само собой, ArcGIS работает с путями каталога.

Рабочая область и базовое имя

Пути каталога состоят из двух частей: рабочей области и базового имени, как показано ниже:

Местоположение

Местоположение (Location) является общим термином (см., например: «Укажите местоположение ваших данных» или «Введите местоположение ваших данных»).

Прямые и обратные косые черты

В Windows обратная косая черта (\) используется в качестве разделителя при указании пути. UNIX системы используют прямую косую черту (/). В ArcGIS не имеет значения, какая косая черта используется при указании пути. ArcGIS всегда будет правильно считывать путь, какой бы знак в нем не использовался.

Обратная косая черта при написании скрипта

Языки программирования, уходящие корнями в UNIX и язык C, такие как Python, рассматривают обратную косую черту (\) в качестве управляющего символа. К примеру, \n соответствует возврату каретки. Поскольку пути могут содержать обратные косые черты, необходимо избегать их распознавания как знак перехода. Обычным делом является использование двойной обратной косой черты, например:

thePath = "E:\\data\\telluride\\newdata.gdb\\slopes"

Другой вариант преобразования путей в строки Python с помощью директивы r показан ниже. Благодаря этому Python будет игнорировать обратные косые черты.

thePath = r"E:\data\telluride\newdata.gdb\slopes"

Абсолютные и относительные пути

Абсолютный, или полный путь

Абсолютный (или полный) путь начинается с буквы диска, за которой следует двоеточие, например, D:.

Относительный путь

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

В приведенной ниже структуре папок, предположим, что вы воспользовались Проводником Windows для перехода в папку D:\Data\Shapefiles\Soils. После перехода в данный каталог относительный путь будет использовать директорию D:\Data\Shapefiles\Soils в качестве текущей (пока вы не перейдете в новый каталог и он не станет текущей директорией). Текущую директорию иногда называют корневой папкой.

Если вы хотите перейти к папке Landuse из текущей директории (Soils), вам нужно ввести следующий текст в адресную строку Проводника Windows:

Проводник Windows перейдет в папку D:\Data\Shapefiles\Landuse. Другие примеры использования папки D:\Data\Shapefiles\Landuse в качестве текущей представлены ниже:

..               (D:\Data\Shapefiles)
..\..            (D:\Data)
..\..\Final      (D:\Data\Final)
.                (D:\Data\Shapefiles\Landuse - the current directory)
.\..\Soils       (D:\Data\Final\Soils)
..\..\.\Final\..\Shapefiles\.\Landuse  (D:\Data\Shapefiles\Landuse)
Примечание:

Вы не сможете вводить относительные пути (с использованием точки и двойной точки) в приложениях ArcGIS.

Относительный путь не может распространяться на другие диски. К примеру, если ваша текущая папка находится на диске D, вы не можете использовать относительные пути для перехода к какой-либо директории на диске E.

Абсолютные и относительные пути в ArcMap

При создании документа ArcMap (либо ArcScene, либо ArcGlobe) вы можете указать, что сохраняться будут относительные пути. Для установки этой опции выберите Файл (File)>Свойства документа карты (Map Document Properties). Здесь вы можете указать, будете ли вы хранить абсолютные или относительные пути.

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

D:\Maps\Posters\Newmap.mxd

и данными одного из слоев являются

D:\Data\Final\Infrastructure.gdb\Streets

то в Newmap.mxd записано следующее:

..\..\Data\Final\Infrastructure.gdb\Streets

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

Преобразуются только пути, относящиеся к одному диску

Относительные пути не могут менять диски. То есть в случае, если корневой каталог находится на диске D, вы не сможете использовать относительные пути для перехода к директории на диске E. Если вы сохраняете документ карты с использованием относительных путей, преобразованы и сохранены будут только относящиеся к одному и тому же диску.

Подробнее о ссылках на данные в документе карты

Абсолютные и относительные пути в инструментах модели

Так же как и в ArcMap вы можете указывать, что в инструментах модели будут сохраняться относительные пути.

Текущая папка, используемая для относительных путей, это папка, в которой находится соответствующий набор инструментов. Опция относительного пути конвертирует и сохраняет пути к:

  • Данным модели
  • Растровым изображениям модели
  • Используемым в модели инструментам
  • Файлам, на которые ссылаются метаданные инструмента и справка
  • Таблицам стилей
  • Файлам слоя (.lyr), использующимся для условных обозначений
  • Компилированным файлам справки (.chm)

Для сохранения относительных путей щелкните правой кнопкой мыши инструмент модели, выберите Свойства (Properties), а затем перейдите на закладку Общие (General). В нижней части диалогового окна включите опцию Сохранить относительные пути (Store relative path names (instead of absolute paths), как показано ниже.

Преобразуются только пути, относящиеся к одному диску

Относительные пути не могут менять диски. То есть в случае, если корневой каталог находится на диске D, вы не сможете использовать относительные пути для перехода к директории на диске E. Если вы сохраняете вашу модель с использованием относительных путей, преобразованы и сохранены будут только пути, относящиеся к одному и тому же диску.

Абсолютные и относительные пути в инструментах-скриптах

При использовании мастера Добавить скрипт (Add Script)опция сохранения относительных путей появится на первой панели. Вы также можете установить эту опцию, щелкнув правой кнопкой мыши инструмент-скрипт, выбрав Свойства (Properties), а затем закладку Общие (General). В нижней части диалогового окна выберите Сохранить относительные пути (Store relative path names (instead of absolute paths).

Текущая папка, используемая для относительных путей, это папка, в которой находится соответствующий набор инструментов. Опция относительного пути конвертирует и сохраняет пути к:

  • Скрипту
  • Наборам данных, которые используются в свойстве значения по умолчанию
  • Файлам, на которые ссылаются метаданные инструмента и справка
  • Файлам слоя (.lyr), используемым для свойства условных обозначений
  • Компилированным файлам справки (.chm)
  • Таблицам стилей

Преобразуются только пути, относящиеся к одному диску

Относительные пути не могут менять диски. То есть в случае, если корневой каталог находится на диске D, вы не сможете использовать относительные пути для перехода к директории на диске E. Если вы сохраняете ваш инструмент-скрипт с использованием относительных путей, преобразованы и сохранены будут только пути, относящиеся к одному и тому же диску.

Пути в скрипте не преобразуются

Нельзя использовать точку и двойную точку в скриптах. Например, представленная ниже запись работать не будет:

arcpy.AddField_management("..\redlands.mdb\streets", "ref_ID", "long", "9", "#", "#", \
             "refcode", "NULLABLE", "REQUIRED", "#")

т.к. путь ..\redlands.mdb\streets является относительным.

Какой смысл в использовании относительных путей вместо абсолютных?

Использование абсолютных путей характеризуется следующим:

  • Вы можете перемещать документ или набор инструментов в любое местоположение на вашем компьютере и данные будут по-прежнему найдены, когда вы откроете документ или инструмент.
  • На большинстве компьютеров расположение данных обычно не меняется. То есть вы обычно не перемещаете ваши данные из одной папки в другую. Как правило, используются абсолютные пути.
  • Вы можете ссылаться на данные, которые находятся на других дисках.

С использованием относительных путей может понадобиться внесение следующих корректировок:

  • При перемещении документа карты или набора инструментов необходимо перенести также и данные, на которые он ссылается.
  • При передаче документов, наборов инструментов и данных другому пользователю должны использоваться относительные пути. Иначе возникнет необходимость, чтобы компьютер пользователя имел такую же структуру каталогов, как и ваш.

К примеру, возьмем представленную ниже структуру папок. В этом примере D:\Tools\Toolboxes\Toolbox1 содержит инструмент-скрипт D:\Tools\Scripts\MyScript.py.

При использовании абсолютных путей в случае, если вы перемещаете набор инструментов D:\Tools\Toolboxes\Toolbox1 на другой диск, например, в E:\Final\Toolbox1, ArcGIS найдет D:\Tools\Scripts\MyScript.py и все будет прекрасно работать. Если же вы используете относительные пути, ArcGIS не найдет скрипт и инструмент работать не будет. Диалоговое окно инструмента откроется, но после его запуска вы получите сообщение об ошибке: «Скрипт, связанный с этим инструментом, не существует». Вам необходимо открыть свойства инструмента и ввести корректный путь к скрипту.

С другой стороны, если вы работаете с относительными путями, вы можете просто скопировать папку D:\Tools в любое место на любом компьютере и все будет работать. Это не сработает при использовании абсолютных путей, поскольку другой пользователь может скопировать папку в каталог F:\NewTools и путь D:\Tools\Scripts\MyScript.py на его компьютере найден, естественно, не будет.

Заключение

  • Относительные пути не могут менять диски.
  • Абсолютные пути лучше применять, если данные не будут переноситься, как это обычно и происходит на дисках персональных компьютеров.
  • Относительные пути полезно использовать в случае, когда вы передаете документы и данные другому пользователю.
  • Относительные пути используют обозначения точки и двойной точки (. and ..). Вы можете вводить относительные пути с такими обозначениями в Проводнике Windows и командной строке Windows.
  • ArcGIS не позволяет вводить относительные пути с использованием обозначений точки и двойной точки. Чаще в документе и наборе инструментов хранятся относительные пути (после того как вы отметили опцию сохранения относительных путей).
  • Относительные пути «отсчитываются» от текущей папки, являющейся местоположением сохраненного документа или набора инструментов.

Пути UNC

UNC расшифровывается как Universal (или Uniform, или Unified) Naming Convention – Конвенция об универсальных наименованиях, и является синтаксисом для доступа к директориям и файлам в компьютерных сетях. Синтаксис показан ниже:

\\<computer name>\<shared directory>\

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

Например:

\\pondermatic\public\studyarea.gdb
\\omnipotent\shared_stuff\wednesday\tools

Имя компьютера отделяется с помощью двойной обратной косой черты (\\).

В UNC имя компьютера также называется именем хоста.

Есть несколько правил для путей UNC:

  • Пути UNC не могут содержать меток тома (таких как D).
  • Невозможен переход в директорию выше уровнем, чем общая директория.
  • Опция Сохранять относительные пути (Store relative path names) для документов и инструментов неприменима к путям UNC.

В ArcGIS вы можете использовать путь UNC при любом запросе пути. Это особенно удобно для общедоступных данных в локальной вычислительной сети (LAN). Данные могут храниться на одном компьютере, и любой пользователь, имеющий к нему доступ, может эти данные использовать, пока компьютер не будет выключен или отсоединен от сети.

В Windows возможно открывать доступ к папкам, чтобы другие пользователи в сети могли с ними работать. В ArcCatalog или Проводнике Windows щелкните правой кнопкой мыши Общий доступ и безопасность (Sharing and Security) и следуйте дальнейшим указаниям открывающегося диалогового окна.

URL

URL расшифровывается как Uniform Resource Locator – Универсальный локатор ресурса и уникально описывает адрес любого документа в Интернете. Компонентами URL являются:

  • Протокол, используемый для доступа к ресурсу, такой как HTTP (HyperText Transfer Protocol) или FTP (File Transfer Protocol)
  • Хост (сервер), с которым устанавливается соединение
  • Путь к файлу на хосте

Например:

http://www.esri.com/products.html

Windows Internet Explorer позволяет ввести строку www.esri.com в адресной строке Internet Explorer и тип протокола будет добавлен автоматически http://. Более правильным является явное указание протокола, например, http. Среди других протоколов назовем HTTPS (Secure Hypertext Transfer Protocol), FTP, mailto (адрес электронной почты e-mail) and news (новости Usenet) и т.д.

В ArcGIS вы можете использовать пути URL там, где это является допустимым. В общем, в пользовательском интерфейсе содержатся подсказки, где возможно или необходимо использование URL. При использовании URL в ArcGIS Explorer рекомендуется включать тип протокола как в строке ниже:

вместо

Путь к файлу подключения ArcSDE

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

D:\Data\Final\Connection to ArcSDE.sde\EastValley\powerlines

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

Связанные темы

Отзыв по этому разделу?

Что такое URL адрес — его структура и технические параметры

Аббревиатура URL расшифровывается как Uniform Resource Locator. В переводе это значит «единый указатель ресурсов». Детище Тима Бернеса-Ли, «отца» всемирной паутины, создан для упрощения структурирования данных в сети Интернет и приведения всех адресов к единому виду.

Принятое произношение: «у-эр-эл» или «ю-ар-эл». В разговорной речи допустимо произносить эту аббревиатуру как «УРЛ». В этой статье мы рассмотрим что такое URL, какова его структура и технические особенности которые необходимо знать любому веб-мастеру.

Схема и структура URL адресов

Что же такое URL? Иными словами, это путь до какого-то файла: HTML, видео, аудио, текстового и пр. Этим адресом обладают все документы, находящиеся в сети Интернет. Только с помощью URL сервер может обеспечить доступ к своим файлам для любого пользователя всемирной паутины.

Разумеется, существует стандарт. Он-то и определяет, как именно должен выглядеть URL к тому или иному документу. Этот стандарт используется не только для доступа к сайтам и файлам, по протоколу http и https, его же используют и при передаче файлов на сервер по протоколу ftp и в других протоколах. Но нас они в данном случае не интересуют.

Как указать url адрес к веб-ресурсам?

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

http://webmastermix.ru/direktoriya/fail.html

Давайте рассмотрим все подробно:

  • http:// — протокол передачи данных.
  • webmastermix.ru — доменное имя, название узла (хоста) и дополнительные параметры.
  • /direktoriya/ — директория, в которой располагается нужный нам файл. Из этой части ссылки мы видим, что на сервере хранится папка direktoriya, которая содержит необходимый нам файл.
  • fail.html — файл с расширением «.html», он-то нам и нужен.

Как видно, папки и файлы разграничиваются знаком «/», который называется «слеш». Путь может быть длиннее. Кроме этого доменное имя может быть указанно с WWW и без WWW. Т. е. может быть: http://www.webmastermix.ru. Это не обязательный параметр, поэтому без разницы укажете вы его или нет необходимый вам файл все равно откроется. Для упрощения его лучше не использовать. И если ваш сайт доступен по двум адресам т. е. с WWW и без WWW, то лучше склеить эти URL и привести к одному виду, где WWW не будет использоваться. Как это сделать читайте в статье: Как настроить 301 редирект в htaccess и в скриптах — более 18 примеров использования.

В общем и целом, что такое url сайта, страницы или изображения ясно. А теперь немножко углубимся.

Структура URL-адреса

Общая схема (структура) URL-адреса следующая:

Каждый из этих параметров важен и имеет своё значение:

  • Схема – протокол передачи данных. Через него мы обращаемся к ресурсу. (http, https, ftp и т.д.)
  • Логин и пароль – эти данные в протоколе http, как правило, не указываются. Они определяют права пользователя на доступу к определенной странице сайта.
  • Собака (@) – специальный разделитель. Без логина и пароля его не указывают.
  • Хост – это доменное имя, иногда IP-адрес ресурса, к которому обращается пользователь. (webmastermix.ru)
  • Порт тоже указывается довольно редко. При обращении к сайту или любому файлу размещенному на сайте автоматически присваивается одно из значений – 80 или 8080.
  • URL-путь – путь к тому или иному файлу. (/direktoriya/fail.html)
  • Параметры – запрос с определёнными параметрами, которые передаются на сервер методом GET. Чтобы разделять параметры применяют знак &, например: ?параметр1=значение1&параметр2=значение2
  • Якорь – это уникальная строка, состоящая из букв и/или цифр. Она ссылается на определённую область открываемого веб-документа. С его помощью можно сделать так, чтобы пользователь попал не в начало HTML документа, а сразу к определенному месту.

Дополнительная информация касающаяся URL адресов

1. В URL адресах используются различные кодировки. Если перекодирования нет, использовать можно только определённое количество символов. Рекомендуется использовать символы [0-9],[a-z],[A-Z],[_],[-].

Чтобы избежать ошибок, разработчик должен именовать файлы сайта только в нижнем регистре и путь к ним указывать точно так же – маленькими буквами. Потому как, на юникс-подобных системах, а на них, чаще всего, работают веб-серверы, символы, написанные в разных регистрах, будут восприниматься машиной как разные. В Windows такого нет, но пренебрегать правилом, всё же, не стоит потому как если ваш файл назван в нижнем регистре, а в URL его название вы указали в верхнем регистре, то сервер не сможет его открыть.

Русские символы использовать можно, однако каждый русский символ будет проходить перекодировку (URL Encoding). И этой после перекодировки они будут выглядеть «страшно», ведь любой символ кириллицы будет закодирован с помощью 2 байт в UTF-8 в шестнадцатеричном виде. Разделяются символы знаком «%».

Например ссылка вида:

http://webmastermix.ru/всё для веб-мастера

Будет иметь вид:

http://webmastermix.ru/%u0432%u0441%u0435%20%u0434 %u043B%u044F%20%u0432%u0435%u0431%u043C%u0430 %u0441%u0442%u0435%u0440%u0430

Бороться с таким неудобством пытаются, однако, не слишком быстро. Поэтому, используя ЧПУ на своих CMS, лучше использовать транслитерацию (vse-dlya-webmastera). Ориентироваться будет проще, да и  для SEO все же наверное лучше.

2. Есть ещё такие URL — адреса которые называются динамическими. Такие URL содержат разные символы («?», «&», «=» и пр.) при помощи которых задаются параметры, кода мы рассматривали структуру URL уже упоминали про параметры, смотрите выше. Появляются такие адреса вследствие работы скриптов, размещённых на сайте. В таком случае, ссылка может иметь примерно такой вид:

http://webmastermix.ru/?page_id=1

3. Кроме этого URL страницы может содержать якорь (о нем тоже шла речь выше, когда рассматривалась структура URL) и иметь следующий вид:

http://webmastermix.ru/direktiriya/fail.html#1razdel

Как видите здесь на конце ссылки появился еще один параметр — #1razdel, который называется якорем ссылки. С этим вы так же часто будете сталкиваться при создании сайта и материалов. При помощи URL в котором указан якорь мы можем автоматически переместиться к той области HTML страницы где данный якорь указан. Очень часто такие URL используют на страницах с большим количеством контента, для упрощения навигации по такой странице создается содержание состоящее из таких ссылок.

Чтобы создать такую ссылку, нужно заранее, в то место HTML страницы, куда вы хотите перенаправлять по ней пользователя, вставить следующий HTML код:

После этого можно сослаться на эту страницу при помощи ссылки представленной выше.

Рекомендуем ознакомиться:

Подробности

Опубликовано: 11 Ноябрь 2013

Обновлено: 11 Ноябрь 2013

Просмотров: 60924

Ошибка «Недопустимый URL-адрес, путь» когда внешний пользователь пытается подключиться к общему календарю

Симптомы

Рассмотрим следующий сценарий:

  • В любом месте с помощью Microsoft Forefront Unified Access Gateway 2010 публикации Microsoft Exchange OWA или Outlook.

  • Входа в систему для использования средства «Опубликовать календарь» Exchange совместный доступ к его календарю других внешних пользователей в формате iCal или формат HTML.

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

Недопустимый путь URL-адреса

Причина

Это происходит потому, что функция «Опубликовать календарь» Exchange неправильно перенаправляет клиента на веб-страницу, которая создает URL-адрес для общего доступа к календарю и URL-адрес следующего вида:

http://webmail.company.com/owa/calendar/firstName.Name@company.com/Calendar/calendar.html
По умолчанию шаблон публикации единого доступа шлюза Exchange не включает набор URL-адресов, позволяющий для данного URL-адреса.

Решение

Эта проблема решена в накопительном пакете обновлений 1 для Microsoft Forefront единой Access Gateway 2010 Пакет обновления 4.

Примечание. Это исправление является эффективным для только недавно заново магистральные соединения или публикации.

Временное решение

Для временного решения этой проблемы для существующих магистральных или публикации, добавьте «/ owa/calendar/.*» задать URL-адрес канала связи.

Статус

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе «Относится к».

Ссылки

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

URL — Викиреальность

(перенаправлено с «Url») Я вам кину ссылочку

URL (англ. Uniform Resource Locator, рус. Единый указатель ресурсов‎, ранее англ. Universal Resource Locator, рус. Универсальный указатель ресурсов‎) — единообразный локатор (определитель местонахождения) ресурса и стандартизированный способ записи адреса ресурса в сети Интернет. Самый используемый локатор в мире.

URL был изобретён Тимом Бернерсом-Ли в 1990 году в стенах Европейского совета по ядерным исследованиям (фр. Conseil Européen pour la Recherche Nucléaire, CERN) в Женеве, Швейцария. URL стал фундаментальной инновацией в Интернете. Изначально URL предназначался для обозначения мест расположения ресурсов (чаще всего файлов) во Всемирной паутине. Сейчас URL применяется для обозначения адресов почти всех ресурсов Интернета. Стандарт URL закреплён в документе RFC 1738, прежняя версия была определена в RFC 1630. Сейчас URL позиционируется как часть более общей системы идентификации ресурсов URI (англ. Uniform Resource Identification), сам термин URL постепенно уступает место более широкому термину URI. Стандарт URL регулируется организацией IETF и её подразделениями.

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

Графически она выражается так:[1]

Изначально локатор URL был разработан как система для максимально естественного указания на местонахождения ресурсов в сети. Локатор должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII‐символов (к примеру, пробел никогда не применяется в URL). В связи с этим, возникла следующая традиционная форма записи URL:

<схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>?<параметры>#<якорь>


Где:

  • схема — схема обращения к ресурсу; в большинстве случаев имеется в виду сетевой протокол (обычно http(s), mailto, irc, ftp)
  • логин — имя пользователя, используемое для доступа к ресурсу
  • пароль — пароль указанного пользователя
  • хост — полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста в форме четырёх групп десятичных чисел, разделённых точками; числа — целые в интервале от 0 до 255. порт порт хоста для подключения URL-путь уточняющая информация о месте нахождения ресурса; зависит от протокола. параметры строка запроса с передаваемыми на сервер (методом GET) параметрами. Разделитель параметров — знак &. Пример:

    ?параметр_1=значение_1&параметр_2=значение_2&параметр3=значение_3

  • якорь — идентификатор «якоря», ссылающегося на некоторую часть (раздел) открываемого документа. С развитием AJAX в этой части стали размещать параметры для JavaScript на странице, и страница в зависимости от указанного якоря может в браузере выглядеть по-разному. Для обеспечения возможности индексирования подобных страниц поисковыми системами компания Google предложила подход, предполагающий использование знака ! в начале якоря и некоторую поддержку на сервере сайта[2].

На сегодняшний день Тим Бернес-Ли признаёт, что символ двойной косой черты в структуре URL является избыточным[3].

[править] Схемы (протоколы)

Общепринятые схемы (протоколы) URL включают:

  • ftp — Протокол передачи файлов FTP
  • http — Протокол передачи гипертекста HTTP
  • rtmp — Real Time Messaging Protocol проприетарный протокол потоковой передачи данных, в основном используется для передачи потокового видео и аудиопотоков с веб-камер через интернет.
  • rtsp — Потоковый протокол реального времени.
  • https — Специальная реализация протокола HTTP, использующая шифрование (как правило, SSL или TLS)
  • gopher — Протокол Gopher
  • mailto — Адрес электронной почты
  • news — Новости Usenet
  • nntp — Новости Usenet через протокол NNTP
  • irc — Протокол IRC
  • prospero — Служба каталогов Prospero Directory Service
  • telnet — Ссылка на интерактивную сессию Telnet
  • wais — База данных системы WAIS
  • xmpp — Протокол XMPP (часть Jabber)
  • file — Имя локального файла
  • data — Непосредственные данные (Data: URL)
  • tel — звонок по указаному телефону

Экзотические схемы URL:

  • afs — Глобальное имя файла в файловой системе Andrew File System
  • cid — Идентификатор содержимого для частей MIME
  • mid — Идентификатор сообщений для электронной почты
  • mailserver — Доступ к данным с почтовых серверов
  • nfs — Имя файла в сетевой файловой системе NFS
  • tn3270 — Эмуляция интерактивной сессии Telnet 3270
  • z39.50 — Доступ к службам ANSI Z39.50
  • skype — Протокол Skype
  • smsto — Открытие редактора SMS в некоторых мобильных телефонах
  • ed2k — Файлообменная сеть eDonkey, построенная по принципу P2P
  • market — Android Маркет

[править] Кодирование URL

Появление адресов URL стало существенным нововведением в Интернете. Однако с момента его изобретения и по сей день стандарт URL обладает серьёзным недостатком — в нём можно использовать только ограниченный набор символов, даже меньший, нежели в ASCII: латинские буквы, цифры и лишь некоторые знаки препинания. Если мы захотим использовать в URL символы кириллицы, или иероглифы, или, скажем, специфические символы французского языка, то нужные нам символы должны быть перекодированы особым образом.


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

Это всё входит в противоречие с принципом интернационализма, провозглашаемого всеми ведущими организациями Интернета, включая W3C и ISOC. Эту проблему призван решить стандарт IRI (англ. International Resource Identifier) — международных идентификаторов ресурсов, в которых можно было бы без проблем использовать символы Юникода, и которые поэтому не ущемляли бы права других языков. Хотя заранее сложно сказать, смогут ли когда-либо идентификаторы IRI заменить столь широко используемые URL (и URI в целом).

Ещё один кардинальный недостаток URL состоит в отсутствии гибкости. Ресурсы во Всемирной паутине и Интернете перемещаются, а ссылки в виде URL остаются, указывая на уже отсутствующие ресурсы. Это особенно болезненно для электронных библиотек, каталогов и энциклопедий. Для решения этой проблемы были предложены постоянные локаторы PURL (англ. Persistent Uniform Resource Locator). В сущности это те же URL, но они указывают не на конкретное место расположения ресурса, а на запись в базе данных PURL, где, в свою очередь, записан уже конкретный URL-адрес ресурса. При обращении к PURL сервер находит нужную запись в этой базе данных и перенаправляет запрос уже на конкретное местоположение ресурса. Если адрес ресурса меняется, то нет нужды исправлять все бесчисленные ссылки на него — достаточно лишь изменить запись в БД. В настоящий момент эта идея не стандартизирована и не имеет широкого распространения.

  • Красные ссылки — ссылки на несуществующие (ещё не созданные или удалённые) страницы в википроектах. Красные ссылки на личные страницы участников привели к возникновению красных участников.
  • Битая ссылка — url, ссылающийся на несуществующий или прекративший существование интернет-сайт или интернет-страницу.
  • Поддельные ссылки — используемые злоумышленниками для обмана интернет-пользователей
  • Упоминание — неактивная ссылка, представляющая собой обычный текст с адресом сайта, не являющийся гипертекстом.[4]

Что такое URL адреса, чем отличаются абсолютные и относительные ссылки для сайта

Обновлено 16 мая 2021
  1. Урл адреса — что это и как влияют на индексацию
    1. URL и URI
    2. WWW и другие зеркала сайта
    3. Откуда берутся лишние URL-адреса (дубли)
  2. Структура Урл адреса
    1. Адреса в виде хеш-ссылок
    2. Какие символы можно использовать в URL-ах?
  3. Относительные и абсолютные ссылки
    1. Чем хороши относительные ссылки
    2. Создаем ссылки относительно документа
    3. Создание ссылки относительно корня
    4. Как правильно сослаться на папку

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня хочу затронуть тему формирования уникальных URL адресов в интернете и рассказать про принципы создания относительных и абсолютных ссылок.

Конечно же, тема формирования Урлов или их более расширенной версии URI (ури) довольно сложна, если копать глубоко и пытаться добраться до истины.

Но нам этого и не нужно, ибо достаточно понимать структуру URL в ее прикладном применении.

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

Урл адреса — что это и как они влияют на индексацию сайта

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

URL и URI

Ну так вот, любой документ (вебстраница) в сети интернет имеет свой уникальный адрес URL, который расшифровывается как Uniform Resource Locator (определитель местонахождения ресурса). Он, равно как и протокол HTTP, а еще и как язык Html с валидатором W3C, был разработан и создан одним и тем же человеком — Тимом Бернерсом-Ли (отцом основателем проекта Всемирная паутина WWW — World Wide Web).

По большому счету URL является частным случаем другого идентификатора под названием URI (Uniform Resource Identifier — унифицированный идентификатор ресурса), но нам с вами все эти тонкости, скорее всего, будут не нужны (излишни) при работе со своим сайтом. Давайте попробуем в общих чертах разобраться с тем, что это такое и из каких частей он состоит, а потом перейдем к относительным и абсолютным ссылкам.

URL адрес — это способ однозначно указать на что-то в интернете. Он используется не только для работы с сайтами (что это?) по протоколу http (еще и по ftp), но нас, конечно же, будет интересовать именно применение этого идентификатора к Web (протоколы http и https). Урл в этом случае будет выглядеть примерно так (чуть ниже я приведу общую блок-схему его построения, но пока хотелось бы начать с простого частого примера):

https://ktonanovenkogo.ru/papka/fail.html

В этом примере адреса часть с «http» обозначает протокол передачи данных или же, если следовать терминологии спецификации, схему (ибо тот же mailto не является протоколом передачи данных, в отличии от http или ftp, но тоже используется в Урл адресах). Далее в приведенном примере следует «ktonanovenkogo.ru» (или же это может быть «www.ktonanovenkogo.ru») — это так называемое доменное имя или же имя узла (хоста).

WWW и другие зеркала сайта, которые нужно склеить

В Web-е есть специфика обозначения доменного имени в URL адресе сайта, которое может быть с WWW или без WWW. Для того, чтобы успешно можно было раскрутить свой сайт, очень важно склеить эти два зеркала вашего сайта с WWW или без него через 301 редирект. Зачастую, склейку зеркал за вас может выполнить хостер, но это обязательно нужно будет проверить.

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

Тоже справедливо и при переезде сайта на защищенный протокол https с http — для поисковиков это будет уже другой сайт.

Ничего плохого в использовании WWW в URL сайта нет, но нужно четко определить главное зеркало (через Яндекс Вебмастер и через Гугл Вебмастер, а также через прописывание директивы Host в файл robots.txt вашего сайта), которое будет индексироваться поисковиками и которое будет участвовать в ранжировании.

У меня, например, главное зеркало — это «ktonanovenkogo.ru», т.е. «без атавизма», и если вы добавите к любому моему Урлу эту чудо-приставку, то произойдет автоматическое перенаправление на адрес «без WWW».

https://www.ktonanovenkogo.ru/papka/fail.html

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

Например, на рег.ру (промо-код на скидку EB69-6AD7-D77D-43BD) можно посмотреть свободные для регистрации потенциальные зеркала или освобождающиеся домены (можете вводить предполагаемое имя домена прямо в приведенную ниже форму):

Откуда берутся лишние URL-адреса (дубли страниц) вашего сайта в индексе поисковиков

Но вернемся к нашим баранам. Та часть URL, которая расположена за третьим слешем (/) — в нашем примере это «papka/fail.html» — называется путем до конкретного объекта (документа или файла). В нашем случае это документ «fail.html», который лежит в каталоге «papka», который в свою очередь лежит в корневой папке (корень в Урле всегда соответствует третьему слешу слева).

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

https://www.ktonanovenkogo.ru/papka/fail.html?print=yes

Вся беда в том, что для поисковых систем два таких URL адреса (с и без Get параметров) являются абсолютно разными веб документами и каждый из них будет проиндексирован поисковиками.

К одному и тому же Урлу может добавляться вашей Cms сколько угодно много различных Get параметров и все это будет проиндексировано Яндексом и Гуглом, если вы не создадите соответствующие запреты в файле robots.txt, ссылка на статью про который приведена чуть выше. В противном случае поисковики вас могут пессимизировать за большое количество дублированного контента (одного и того же содержимого, доступного по разным адресам).

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

https://ktonanovenkogo.ru
https://ktonanovenkogo.ru/index.php

(даже по трем — еще и https://ktonanovenkogo.ru/) и в любом случае откроется главная страница. Это довольно плохо, т.к. поисковики найдут у меня три разных страницы (имеющих с их точки зрения разные URL адреса), но с одинаковым содержанием, что им, ох как не нравится.

Поэтому у меня сделано так, что при вводе любого из приведенных чуть выше Урлов будет выполнено перенаправление на URL вида «https://ktonanovenkogo.ru/». Делается это, как правило, с помощью 301 редиректа в файле .htaccess, либо напрямую в настройках сервера вами самими, либо вашим хостером.

Гораздо больше информации про зеркала сайта и их склейку читайте в приведенной по ссылке публикации.

Структура Урл адреса и перекодировка в URL-encoded

Вообще, полную блок-схему URL адреса можно представить так:

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

http://login:[email protected]/platniy-dostup.html

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

ftp://login:[email protected]:6789/samoe-nujnoe/cimus

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

Урл адреса в виде хеш-ссылок, открывающие страницу в нужном месте

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

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

Выглядеть хеш-ссылка может так (в тексте страницы проставлен якорь «url-1»):

#url-1 

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

Какие символы можно использовать в URL адресах?

Еще стоит сказать о различных кодировках, которые используются в URL адресах. Без перекодирования в них можно использовать только ограниченное количество символов. Обычно советуют ограничиться набором из символов: [0-9],[a-z],[A-Z],[_],[-].

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

Использование каких-либо других символов (включая русские) в урлах допустимо, но при этом будет происходить перекодировка этих самых символов (URL Encoding).

Что опечаливает, так это неудобоваримый вид URL адресов с символами, например, кириллицы, которые получаются после перекодировки. Каждый символ кириллицы кодируется с помощью двух байт в Юникоде (UTF-8), записанных в шестнадцатеричном виде и разделенных знаком процента «%». Например, такой Урл:

https://ktonanovenkogo.ru/кто на новенького/

после перекодировки станет таким:

http//ktonanovenkogo.ru/%BA%D1%82%D0%BE%20%D0%BD%D0%
B0%20%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C%D0%BA%D0
%BE%D0%B3%D0%BE

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

В связи со всем вышесказанным я бы советовал при использовании ЧПУ на своих CMS не делать адреса страниц на русском, а использовать транслитерацию, тем более, что по мнению многих продвиженцев так будет лучше в плане Seo оптимизации под Яндекс и Google.ru.

Относительные и абсолютные ссылки на сайте

Давайте начнем с абсолютных ссылок, т.к. в этом случае ничего особенного, сверх того, что мы уже обсудили в данной статье, говорить и не придется. Т.о. абсолютная ссылка должна соответствовать тем требованиям, которые мы предъявляем к URL адресу — должен указываться протокол передачи данных, доменное имя сайта (хоста) и путь до нужного web документа. Все.

В Html абсолютная ссылка формируется с помощью специальных тегов A (гиперссылки), т.е. для ее проставления мы просто должны будем окружить открывающим и закрывающим тегами гиперссылки нужное место в тексте документа (фразу или картинку) и прописать в открывающем теге A в атрибуте «Href» абсолютный путь до того документа, на который должен будет попасть посетитель при переходе по ней:

<a href="https://ktonanovenkogo.ru/vokrug-da-okolo/programs/phpmyadmin-skachat-ustanovka-nastrojka.html">ПхпМайАдмин</a>

Все очень просто.

Чем хороши относительные ссылки и как их можно получить

Однако, абсолютные гиперссылки обычно используют только в тех случаях, когда хотят сослаться на внешние сайты, а для внутренних переходов большинство вебмастеров (умных и прозорливых, не таких как я 🙂 ) стараются использовать относительные ссылки. И это есть несколько причин:

  1. Относительные ссылки по определению более короткие и не загромождают, не утяжеляют код сайта (ведь в этом деле важна любая мелочь).
  2. Кроме того, при переезде на другой домен или при смене протокола на https вам не придется менять все ссылки на сайте.
  3. К тому же, некоторые конструкции интернет проекта можно будет очень быстро и безболезненно перенести на другой ресурс, не изменяя при этом внутренние относительные ссылки.

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

Создаем относительные ссылки относительно документа, из которого они проставляются

Самый простой и короткий вариант записи относительного пути (имеется в виду значения атрибута Href тега гиперссылки) получится в том случае, когда оба web документа: донор (с которого она проставляется) и акцептор (файл или web документ, на который она ведет), находятся в одной папке на сервере.

Тогда относительная ссылка будет представлять из себя лишь название web документа акцептора:

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

Теперь давайте предположим, что документ акцептор лежит в папке, которая расположена в одной директории с документом донором.

Как в этом случае будет выглядеть относительная ссылка? Все тоже довольно просто:

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

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

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

Для того, чтобы нам от документа донора пройти к файлу (или документу) акцептору, потребуется подняться из этой папки на уровень выше. Для этого предусмотрен специальный элемент — две точки подряд, а затем через прямой слеш прописывается дальнейший путь к акцептору. Поэтому для приведенного выше примера относительный путь будет иметь вид:

<a href="../akceptor.html">Что такое URL адреса</a>

Если вам понадобится подняться на два уровня вверх, то запись будет иметь вид:

<a href="../../akceptor.html">Что такое Урл</a>

Ну, а если после этого для прописывания относительного пути до акцептора вам нужно будет еще войти в какую-либо папку на втором верхнем (относительно документа донора) уровне:

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

<a href="../../primer-2/akceptor.html">Сложная конструкция пути</a>

Таких спусков в папки и подъемов на уровень вверх может быть сколь угодно много, главное, чтобы вы сами не запутались.

Создание ссылки относительно корневой папки

Все рассмотренные выше ссылки мы писали относительно того документа донора, с которого проставляется гиперссылка, но можно в качестве точки отсчета взять корневую папку сайта. Корень в обозначении относительных путей выглядит как одиночный прямой слеш «/».

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

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

Любую относительную ссылку, прописанную относительно корня сайта, можно представить как абсолютную, но с убранной частью стоящей слева от третьего слеша.

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

<a href="https://ktonanovenkogo.ru/wp-content/uploads/html-tegi.html">анкор</a>

А относительный до того же самого файла будет уже несколько короче:

<a href="/wp-content/uploads/html-tegi.html">Текст</a>

Как сослаться на папку в относительном и абсолютном виде

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

<a href="/wp-content/uploads/">анкор</a>

А не такую:

<a href="/wp-content/uploads">текст</a>

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

Также следует знать, что при обращении в относительной или абсолютной ссылке к папке, веб сервер отобразит так называемый индексный файл, который лежит в ней и который, как правило, называется либо index.html, либо index.php. Если индексного файла в папке не будет, то при неправильно настроенной на сервере безопасности вы увидите листинг ее содержимого, что может привести к снижению безопасности вашего ресурса.

Обязательно закройте эту уязвимость, если обнаружите.

Кстати, обращение к главной странице сайта тоже по своей сути есть обращение к папке (корневой), и при этом будет запущен индексный файл лежащий в корне (в моем случае это index.php). Так вот, если вы обращаетесь к папке, то для снижения нагрузки на сервер лучше прописывать после доменного имени прямой слеш:

<a href="https://ktonanovenkogo.ru/">Абсолютная ссылка на главную</a>

Вот оно чё, Михалыч!

Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

Django — диспетчер URL-адресов — Чистая,элегантная схема URL-адреса-важная деталь в высококачественном веб-прилож

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

См Классных URIs не меняются , по World Wide Web создатель Тим Бернерс-Ли, за отличные аргументы о том, почему URL — адрес должен быть чистой и годной к употреблению.




Overview

Для разработки URL-адресов для приложения вы создаете модуль Python, неофициально называемый URLconf (конфигурация URL). Этот модуль представляет собой чистый код Python и является отображением между выражениями URL-пути к функциям Python (ваши взгляды).

Это отображение может быть как коротким, так и длинным, если необходимо. Он может ссылаться на другие сопоставления. И, поскольку это чистый код Python, его можно создавать динамически.

Django также предоставляет возможность переводить URL-адреса в соответствии с активным языком. См. Документацию по интернационализации для получения дополнительной информации.

Как Django обрабатывает запрос

Когда пользователь запрашивает страницу с вашего сайта,работающего на Django,именно по этому алгоритму система определяет,какой Python-код должен быть выполнен:

  1. Django определяет используемый корневой модуль URLconf. Обычно это значение параметра ROOT_URLCONF , но если входящий объект HttpRequest имеет атрибут urlconf (устанавливается промежуточным программным обеспечением), его значение будет использоваться вместо параметра ROOT_URLCONF .
  2. Django загружает этот модуль Python и ищет переменную urlpatterns . Это должно быть последовательность из django.urls.path() и / или django.urls.re_path() экземпляров.
  3. Django пробегает каждый шаблон URL по порядку и останавливается на первом шаблоне, который соответствует запрошенному URL, path_info с path_info .
  4. Как только один из шаблонов URL совпадает, Django импортирует и вызывает данное представление, которое является функцией Python (или представлением на основе классов ). Представлению передаются следующие аргументы:
    • Экземпляр HttpRequest .
    • Если совпадающий шаблон URL не содержал именованных групп,то совпадения из регулярного выражения предоставляются в качестве позиционных аргументов.
    • Аргументы ключевого слова состоят из любых именованных частей, которые соответствуют предоставленному выражению пути, переопределяются любыми аргументами, указанными в необязательном аргументе kwargs для django.urls.path() или django.urls.re_path() .
  5. Если ни один шаблон URL не совпадает или если в какой-либо точке этого процесса возникает исключение, Django вызывает соответствующее представление обработки ошибок. См. Обработка ошибок ниже.

Example

Вот пример URLconf:

from django.urls import path

from . import views

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles/<int:year>/', views.year_archive),
    path('articles/<int:year>/<int:month>/', views.month_archive),
    path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]

Notes:

  • Чтобы получить значение из URL,используйте угловые скобки.
  • Захваченные значения могут дополнительно включать тип преобразователя. Например, используйте <int:name> для захвата целочисленного параметра. Если конвертер не включен, любая строка, за исключением символа / , сопоставляется.
  • Нет необходимости добавлять косую черту, потому что это есть в каждом URL. Например, это articles , а не /articles .

Примеры запросов:

  • Запрос к /articles/2005/03/ будет соответствовать третьей записи в списке. Django будет вызывать функцию views.month_archive(request, year=2005, month=3) .
  • /articles/2003/ будет соответствовать первому шаблону в списке, а не второму, потому что шаблоны проверяются по порядку, и первый тест проходит первым. Не стесняйтесь использовать порядок, чтобы вставить специальные случаи, как это. Здесь Django будет вызывать функцию views.special_case_2003(request)
  • /articles/2003 не будет соответствовать ни одному из этих шаблонов, поскольку каждый шаблон требует, чтобы URL заканчивался косой чертой.
  • /articles/2003/03/building-a-django-site/ будет соответствовать окончательному шаблону. Django будет вызывать функцию views.article_detail(request, year=2003, month=3, slug="building-a-django-site") .

Путевые преобразователи

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

  • str — Соответствует любой непустой строке, за исключением разделителя пути, '/' . Это значение по умолчанию, если конвертер не включен в выражение.
  • int — соответствует нулю или любому положительному целому числу. Возвращает int .
  • slug — соответствует любой строке slug, состоящей из букв или цифр ASCII, а также символов дефиса и подчеркивания. Например, building-your-1st-django-site .
  • uuid — соответствует форматированному UUID. Чтобы предотвратить сопоставление нескольких URL-адресов с одной и той же страницей, необходимо включить тире, а буквы должны быть строчными. Например, 075194d3-6885-417e-a8a8-6c931e272f00 . Возвращает экземпляр UUID .
  • path — соответствует любой непустой строке, включая разделитель пути, '/' . Это позволяет сопоставлять полный путь URL-адреса, а не сегмент пути URL-адреса, как в случае с str .

Регистрация пользовательских контурных преобразователей

Для более сложных требований по соответствию,вы можете определить свои собственные преобразователи траекторий.

Преобразователь-это класс,который включает в себя следующее:

  • regex атрибута класса, в виде строки.
  • to_python(self, value) метод, который обрабатывает преобразование найденной строки в тип , который должен быть передан в функцию просмотра. Он должен вызвать ValueError , если не может преобразовать данное значение. Ошибка ValueError интерпретируется как несоответствие, и, как следствие, пользователю отправляется ответ 404, если не соответствует другой шаблон URL.
  • to_url(self, value) метод, который обрабатывает преобразование типа Python в строку для использования в URL. Он должен вызвать ValueError , если не может преобразовать данное значение. ValueError интерпретируется как отсутствие матча и , как следствие , reverse() не будет поднимать NoReverseMatch , если URL — адрес другого шаблон совпадает.

    Изменено в Django 3.1:

    Поддержка повышения ValueError , чтобы указать, что совпадение не было добавлено.

Например:

class FourDigitYearConverter:
    regex = '[0-9]{4}'

    def to_python(self, value):
        return int(value)

    def to_url(self, value):
        return '%04d' % value

Зарегистрируйте пользовательские классы конвертера в вашем URLconf, используя register_converter() :

from django.urls import path, register_converter

from . import converters, views

register_converter(converters.FourDigitYearConverter, 'yyyy')

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles/<yyyy:year>/', views.articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$', views.article_detail),
]

Это достигает примерно того же,что и в предыдущем примере,за исключением того:

  • Точные URL,которые будут соответствовать,немного более ограничены.Например,год 10000 больше не будет соответствовать,так как целые числа года ограничены быть точно четырьмя цифрами длиной.
  • Каждый захваченный аргумент посылается в представление как строка,независимо от того,какое соответствие регулярному выражению делает регулярное выражение.

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

Использование неназванных групп регулярных выражений

Помимо синтаксиса именованной группы, например (?P<year>[0-9]{4}) , вы также можете использовать более короткую безымянную группу, например ([0-9]{4}) .comments/(?:page-(?P<page_number>\d+)/)?$’, comments), ]

Оба шаблона используют вложенные аргументы и разрешаются: например, blog/page-2/ приведет к blog_articles с blog_articles с двумя позиционными аргументами: page-2/ и 2 . Второй шаблон для comments будет соответствовать comments/page-2/ с аргументом ключевого слова page_number , установленным в 2. Внешний аргумент в этом случае является аргументом без захвата (?:...) .

Представление blog_articles требует обратного перехваченного внешнего аргумента, в этом случае page-2/ или без аргументов, в то время как comments могут быть отменены без аргументов или значения для page_number .

Вложенные захваченные аргументы создают сильную связь между аргументами представления и URL-адресом, как показано на blog_articles : представление получает часть URL-адреса ( page-2/ ), а не только значение, в котором заинтересовано представление. Эта связь становится еще более заметной, когда обратный, поскольку для обратного просмотра нам нужно передать часть URL вместо номера страницы.

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

По какому URLconf ищет

URLconf ищет по запрашиваемому URL,как обычная Python-строка.Она не включает в себя GET или POST параметры,а также доменное имя.

Например, в запросе к https://www.example.com/myapp/ URLconf будет искать myapp/ .

В запросе к https://www.example.com/myapp/?page=3 , URLconf будет искать myapp/ .

URLconf не смотрит на метод запроса. Другими словами, все методы запроса — POST , GET , HEAD и т. Д. — будут направлены к одной и той же функции для одного и того же URL.

Указание значений по умолчанию для аргументов просмотра

Удобный прием — указать параметры по умолчанию для аргументов ваших представлений. Вот пример URLconf и просмотра:

from django.urls import path

from . import views

urlpatterns = [
    path('blog/', views.page),
    path('blog/page<int:num>/', views.page),
]


def page(request, num=1):
    
    ...

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

Performance

Каждое регулярное выражение в urlpatterns компилируется при первом обращении к нему. Это делает систему невероятно быстрой.

Синтаксис переменной

urlpatterns

urlpatterns должна быть последовательность из path() и / или re_path() экземпляров.

обработка ошибок

Когда Django не может найти соответствие запрошенному URL-адресу или возникает исключение, Django вызывает представление обработки ошибок.

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

См. Документацию по настройке представлений об ошибках для получения полной информации.

Такие значения могут быть установлены в вашем корневом URLconf.Установка этих переменных в любом другом URLconf не будет иметь никакого эффекта.

Значения должны быть callables,или строками,представляющими полный путь импорта Python к представлению,которое должно быть вызвано для обработки состояния ошибки.

Переменные есть:

Включая другие URLconfs

В любой момент ваши urlpatterns могут «включать» другие модули URLconf. По сути, это «корни» набора URL-адресов ниже других.

Например, вот выдержка из URLconf для самого сайта Django . Он включает в себя ряд других URLconfs:

from django.urls import include, path

urlpatterns = [
    
    path('community/', include('aggregator.urls')),
    path('contact/', include('contact.urls')),
    
]

Всякий раз, когда Django встречает include() , он отсекает любую часть URL-адреса, совпадающую с этой точкой, и отправляет оставшуюся строку во включенный URLconf для дальнейшей обработки.

Другой возможностью является включение дополнительных шаблонов URL с использованием списка экземпляров path() . Например, рассмотрим этот URLconf:

from django.urls import include, path

from apps.main import views as main_views
from credit import views as credit_views

extra_patterns = [
    path('reports/', credit_views.report),
    path('reports/<int:id>/', credit_views.report),
    path('charge/', credit_views.charge),
]

urlpatterns = [
    path('', main_views.homepage),
    path('help/', include('apps.help.urls')),
    path('credit/', include(extra_patterns)),
]

В этом примере URL-адрес /credit/reports/ будет обрабатываться credit_views.report() Django credit_views.report () .

Это может быть использовано для удаления избыточности из URLconfs,где повторно используется один префикс шаблона.Например,рассмотрим этот URLconf:

from django.urls import path
from . import views

urlpatterns = [
    path('<page_slug>-<page_id>/history/', views.history),
    path('<page_slug>-<page_id>/edit/', views.edit),
    path('<page_slug>-<page_id>/discuss/', views.discuss),
    path('<page_slug>-<page_id>/permissions/', views.permissions),
]

Улучшить это можно,указав префикс общего пути только один раз и сгруппировав отличающиеся суффиксы:

from django.urls import include, path
from . import views

urlpatterns = [
    path('<page_slug>-<page_id>/', include([
        path('history/', views.history),
        path('edit/', views.edit),
        path('discuss/', views.discuss),
        path('permissions/', views.permissions),
    ])),
]

Захваченные параметры

Включенный URLconf получает любые захваченные параметры от родительских URLconf,поэтому следующий пример верен:

from django.urls import include, path

urlpatterns = [
    path('<username>/blog/', include('foo.urls.blog')),
]


from django.urls import path
from . import views

urlpatterns = [
    path('', views.blog.index),
    path('archive/', views.blog.archive),
]

В приведенном выше примере захваченная переменная "username" передается во включенный URLconf, как и ожидалось.

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

Например:

from django.urls import path
from . import views

urlpatterns = [
    path('blog/<int:year>/', views.year_archive, {'foo': 'bar'}),
]

В этом примере для запроса к /blog/2005/ Django вызовет views.year_archive(request, year=2005, foo='bar') .

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

Урегулирование конфликтов

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

Например,эти два набора URLconf функционально идентичны:

Установите один:

from django.urls import include, path

urlpatterns = [
    path('blog/', include('inner'), {'blog_id': 3}),
]


from django.urls import path
from mysite import views

urlpatterns = [
    path('archive/', views.archive),
    path('about/', views.about),
]

Установите два:

from django.urls import include, path
from mysite import views

urlpatterns = [
    path('blog/', include('inner')),
]


from django.urls import path

urlpatterns = [
    path('archive/', views.archive, {'blog_id': 3}),
    path('about/', views.about, {'blog_id': 3}),
]

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

Обратное разрешение URL-адресов

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

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

Другими словами, нужен СУХОЙ механизм. Среди других преимуществ это позволило бы развивать дизайн URL-адреса без необходимости просматривать весь исходный код проекта для поиска и замены устаревших URL-адресов.

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

Django предлагает такое решение,при котором картограф URL-адресов является единственным хранилищем дизайна URL-адресов.Вы подаете его с помощью своего URLconf,а затем его можно использовать в обоих направлениях:

  • Начиная с URL,запрошенного пользователем/браузером,он вызывает правильное представление Django,предоставляя любые аргументы,которые могут ему понадобиться,с их значениями,извлеченными из URL.
  • Начиная с идентификации соответствующего представления Django плюс значения передаваемых ему аргументов,получите соответствующий URL.

Первый — это использование, которое мы обсуждали в предыдущих разделах. Второй — это то, что известно как обратное разрешение URL-адресов , обратное сопоставление URL-адресов , обратный поиск URL-адресов или просто обращение URL-адресов .

Django предоставляет инструменты для выполнения реверсирования URL-адресов,которые соответствуют различным уровням,где URL-адреса необходимы:

  • В шаблонах: Использование тега шаблона url .
  • В коде Python: использование функции reverse() .
  • В коде более высокого уровня, связанном с обработкой URL-адресов экземпляров модели Django: метод get_absolute_url() .

Examples

Рассмотрим еще раз эту запись URLconf:

from django.urls import path

from . import views

urlpatterns = [
    
    path('articles/<int:year>/', views.year_archive, name='news-year-archive'),
    
]

В соответствии с этим дизайном URL для архива, соответствующего году nnnn, равен /articles/<nnnn>/ .

Вы можете получить их в коде шаблона,используя его:

<a href="{% url 'news-year-archive' 2012 %}">2012 Archive</a>
{# Or with the year in a template context variable: #}
<ul>
{% for yearvar in year_list %}
<li><a href="{% url 'news-year-archive' yearvar %}">{{ yearvar }} Archive</a></li>
{% endfor %}
</ul>

Или в коде Пайтона:

from django.http import HttpResponseRedirect
from django.urls import reverse

def redirect_to_year(request):
    
    year = 2006
    
    return HttpResponseRedirect(reverse('news-year-archive', args=(year,)))

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

В некоторых сценариях, где представления имеют общий характер, между URL-адресами и представлениями может существовать отношение «многие к одному». В этих случаях имя представления не является достаточно хорошим идентификатором для него, когда наступает момент обращения URL-адресов. Прочитайте следующий раздел, чтобы узнать о решении, которое Django предлагает для этого.

Шаблоны URL-адресов для наименования

Чтобы выполнить реверсирование URL-адресов, вам необходимо использовать именованные шаблоны URL-адресов, как это сделано в приведенных выше примерах. Строка, используемая для имени URL, может содержать любые символы, которые вам нравятся. Вы не ограничены действительными именами Python.

При именовании шаблонов URL выбирайте имена, которые вряд ли будут конфликтовать с выбором имен других приложений. Если вы вызываете comment шаблону URL, и другое приложение делает то же самое, URL, который находит reverse() зависит от того, какой шаблон последний в списке urlpatterns вашего проекта .

Добавление префикса к вашим URL-именам, возможно, полученного из имени приложения (например, myapp-comment вместо comment ), уменьшает вероятность конфликта.

Вы можете сознательно выбрать то же имя URL, что и другое приложение, если вы хотите переопределить представление. Например, распространенным случаем использования является переопределение LoginView . Части Django и большинства сторонних приложений предполагают, что в этом представлении есть шаблон URL с именем login . Если у вас есть пользовательское представление входа в систему и присваивает его URL имя login , reverse() найдет ваше пользовательское представление, если оно находится в urlpatterns после django.contrib.auth.urls (если оно вообще включено).

Вы также можете использовать одно и то же имя для нескольких шаблонов URL, если они отличаются своими аргументами. В дополнение к имени URL-адреса reverse() соответствует количеству аргументов и именам аргументов ключевого слова. Конвертеры пути также могут вызывать ValueError , чтобы указать на отсутствие совпадения, подробности см. В разделе Регистрация настраиваемых конвертеров пути .

пространства имён URL-адресов

Introduction

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

Приложения Django, которые правильно используют пространство имен URL, могут быть развернуты несколько раз для определенного сайта. Например django.contrib.admin имеет AdminSite класс , который позволяет развернуть более одного экземпляра администратора . В следующем примере мы обсудим идею развертывания приложения polls из учебника в двух разных местах, чтобы мы могли предоставлять одинаковые функции двум разным аудиториям (авторам и издателям).

Пространство имен URL-адресов состоит из двух частей,обе из которых являются строками:

application namespace
Здесь описывается имя развертываемого приложения. Каждый экземпляр одного приложения будет иметь одно и то же пространство имен приложения. Например, приложение администратора Django имеет несколько предсказуемое пространство имен приложения 'admin' .
instance namespace
Это идентифицирует конкретный экземпляр приложения. Пространства имен экземпляров должны быть уникальными для всего вашего проекта. Однако пространство имен экземпляра может совпадать с пространством имен приложения. Это используется для указания экземпляра приложения по умолчанию. Например, экземпляр администратора Django по умолчанию имеет пространство имен экземпляра 'admin' .

URL-адреса в пространстве имен указываются с помощью оператора ':' . Например, на главную страницу индекса приложения администратора ссылаются с помощью 'admin:index' . Это указывает на пространство имен 'admin' и именованный URL 'index' .

Пространства имен также могут быть вложенными. Именованный URL 'sports:polls:index' будет искать шаблон с именем 'index' в пространстве имен 'polls' , который сам определен в пространстве имен верхнего уровня 'sports' .

Переключение URL-адресов,расположенных в интервале имен

Когда ему дается разрешение URL-адреса в пространстве имен (например, 'polls:index' ), Django разбивает полное имя на части и пытается выполнить следующий поиск:

  1. Во-первых, Django ищет подходящее пространство имен приложения (в этом примере 'polls' ). Это даст список экземпляров этого приложения.
  2. Если определено текущее приложение, Django находит и возвращает распознаватель URL для этого экземпляра. Текущее приложение может быть указано с аргументом current_app для функции reverse() .

    url Тег шаблона использует пространство имен текущего разрешенное зрения как текущее приложение в RequestContext . Вы можете изменить это значение по умолчанию, установив текущее приложение в атрибуте request.current_app .

  3. Если текущего приложения нет, Django ищет экземпляр приложения по умолчанию. Экземпляр приложения по умолчанию — это экземпляр, который имеет пространство имен экземпляра, совпадающее с пространством имен приложения (в этом примере это экземпляр polls называемый 'polls' ).
  4. Если нет экземпляра приложения по умолчанию,Django выберет последний развернутый экземпляр приложения,каким бы ни было его имя.
  5. Если предоставленное пространство имен не соответствует пространству имен приложения на шаге 1, Django попытается выполнить прямой поиск пространства имен как пространства имен экземпляра .

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

Example

Чтобы продемонстрировать эту стратегию разрешения в действии, рассмотрим пример двух примеров применения polls из учебника: один называется 'author-polls' а другой — 'publisher-polls' . Предположим, что мы усовершенствовали это приложение, чтобы оно учитывало пространство имен экземпляра при создании и отображении опросов.

urls.py

from django.urls import include, path

urlpatterns = [
    path('author-polls/', include('polls.urls', namespace='author-polls')),
    path('publisher-polls/', include('polls.urls', namespace='publisher-polls')),
]

polls/urls.py

from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
    ...
]

Используя эту настройку,возможен следующий поиск:

  • Если один из экземпляров является ток — скажем, если мы рендеринг детализированной страницы в экземпляре 'author-polls''polls:index' будет решить на индексной страницу 'author-polls' , например; то есть оба следующих приведут к "/author-polls/" .

    В методе представления на основе классов:

    reverse('polls:index', current_app=self.request.resolver_match.namespace)
    

    и в шаблоне:

    {% url 'polls:index' %}
    
  • Если текущего экземпляра нет — скажем, если бы мы отображали страницу где-то еще на сайте — 'polls:index' преобразуется в последний зарегистрированный экземпляр polls . Поскольку нет экземпляра по умолчанию (пространство имен экземпляров 'polls' ), будет использоваться последний зарегистрированный экземпляр polls . Это будут 'publisher-polls' так как они объявлены последними в urlpatterns .
  • 'author-polls:index' всегда будет указывать на страницу индекса экземпляра 'author-polls' (и аналогично для 'publisher-polls' ).

Если бы существовал также экземпляр по умолчанию, т. Е. Экземпляр с именем 'polls' , единственное изменение, приведенное выше, было бы в случае отсутствия текущего экземпляра (второй элемент в списке выше). В этом случае 'polls:index' будет преобразован в страницу индекса экземпляра по умолчанию вместо экземпляра, объявленного последним в urlpatterns .

Пространства имен URL-адресов и включённые URLconfs

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

Во-первых, вы можете установить атрибут app_name во включенном модуле URLconf на том же уровне, что и атрибут urlpatterns . Вы должны передать фактический модуль или строковую ссылку на модуль, чтобы include() , а не сам список urlpatterns .

polls/urls.py

from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
    ...
]

urls.py

from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
]

URL, определенные в polls.urls , будут иметь polls пространства имен приложения .

Во-вторых, вы можете включить объект, который содержит встроенные данные пространства имен. Если include() список path() или re_path() случаях, URL — адреса , содержащиеся в этом объекте будут добавлены в глобальное пространство имен. Тем не менее, вы также можете include() 2-кортеж, содержащий:

(<list of path()/re_path() instances>, <application namespace>)

Например:

from django.urls import include, path

from . import views

polls_patterns = ([
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
], 'polls')

urlpatterns = [
    path('polls/', include(polls_patterns)),
]

Это будет включать назначенные шаблоны URL в заданное пространство имён приложения.

Пространство имен экземпляра может быть указано с помощью аргумента namespace для include() . Если пространство имен экземпляра не указано, по умолчанию будет использоваться пространство имен приложения URLconf. Это означает, что он также будет экземпляром по умолчанию для этого пространства имен.

Имя хоста, протокол, путь и многое другое …

Расчетное время чтения: 6 минут

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

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

Основы: Что такое URL?

URL-адрес или унифицированный указатель ресурсов — это фактически уникальный веб-адрес. Он представляет собой «местонахождение» определенного ресурса в Интернете. Термин URL относится к подмножеству универсальных индикаторов ресурсов (URI), которые, помимо идентификации веб-ресурса, также предоставляют средства для его определения.

Все веб-страницы — это ресурсы в Интернете, и у всех есть URL. Но не все URL-адреса указывают на веб-страницы. Каждый ресурс в Интернете имеет URL-адрес, включающий: веб-страницы, файлы, изображения, мультимедиа, веб-приложения, службы и т. Д.

Фактически каждая веб-страница в Интернете состоит из ряда этих активов (или ресурсов), включая: HTML (язык гипертекстовой разметки), гиперссылки (на другие страницы), CSS (каскадные таблицы стилей), Javascript, изображения, файлы, код из множества других языков программирования и многое другое.Все они имеют свои собственные URL-адреса с одинаковыми структурными элементами.

В зависимости от URL-адреса он может содержать некоторые или все из следующего:

Итак, давайте перейдем к делу.

Имя хоста (TLD, имя домена, субдомен)

Начнем с трех элементов, которые являются основой каждого URL. Доменное имя, домен верхнего уровня (TLD) и субдомен.

Домен верхнего уровня

Домен верхнего уровня, или TLD, — как следует из названия — является одним из доменов на самом высоком уровне иерархии системы доменных имен.Это последняя помеченная часть в полностью определенном доменном имени.

Управление и ответственность за TLD делегированы организациям Интернет-корпорацией по присвоению имен и номеров (ICANN) и Управлением по присвоению номеров Интернета (IANA), которое поддерживает корневую зону DNS.

Примеры TLD включают:

Доменное имя

Доменное имя — это зарегистрированная идентификационная «строка» (или слово / фраза), используемая системой доменных имен для определения конкретной области управления и автономии (также известной как местоположение веб-сайта) .Доменное имя — это уровень ниже TLD. Один TLD может содержать сотни тысяч и даже миллионы отдельных доменов «второго уровня». Домен также может называться доменом второго уровня.

Примеры доменных имен (выделены жирным шрифтом):

  • zvelo .com
  • apple .com
  • amazon .com
  • facebook .com
  • google .com

Поддомен

Поддомены немного более тонкие — выражающие относительную зависимость и представляющие часть домена более высокого уровня.Например, в zvelo.com zvelo является субдоменом домена .com. В качестве другого примера, наш инструмент zveloLIVE расположен в субдомене «tools» домена zvelo.com. Последний пример — это наиболее часто упоминаемое использование поддомена.

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

Вот некоторые из наиболее распространенных примеров поддоменов (выделены жирным шрифтом):

  • www .example.com
  • blog .example.com
  • support .example.com
  • mail .example.com

ПРИМЕЧАНИЕ : URL-адрес может исключать или опускать домен отправки, а имя хоста может не включать субдомен. Это называется «голым доменом ». Например, на нашем веб-сайте https://zvelo.com не отображается субдомен.

Вместе эти три элемента URL-адреса наиболее понятны и распознаются.

Протокол, путь / файл и многое другое…

Независимо от того, знакомы вы с ними или нет, следующие элементы URL-адреса широко распространены в Интернете и оказывают значительное влияние на вашу повседневную работу в Интернете, конфиденциальность и безопасность компьютера.

Протокол

Протокол (также называемый протоколом или схемой передачи) в URL-адресе определяет, как данные передаются между хостом и веб-браузером (или клиентом). HTTP и HTTPS (безопасный) — два наиболее распространенных протокола, которые вы найдете в большинстве URL-адресов, хотя есть и другие интернет-протоколы, такие как FTP, DNS, DHCP, IMAP, SMTP и т. Д.

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

Например: https://zvelo.com

Путь / файл

Путь указывает на точное местоположение страницы, публикации, файла или другого ресурса. Часто это аналог основной файловой структуры веб-сайта. Путь находится после имени хоста и разделяется символом «/» (косая черта).Путь / файл также состоит из любого расширения файла ресурса, например изображений (.jpg или .png и т. Д.), Документов (.pdf или .docx) и т. Д.

Но не все URL-адреса будут отображать путь.

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

Например: https: //www.example.com / blog / category / Individual-article-name / или https://example.com/media/upload/filename.jpg

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

Якоря HTML

Якоря HTML (или фрагменты) используются на веб-сайтах для реализации «закладок» и внутренних элементов навигации по страницам. Их можно использовать для предоставления ссылок на определенные места на странице.Якоря будут расположены сразу после файла / пути URL-адреса (если он есть).

Например, вот внутренний URL-адрес с привязкой HTML, который приведет вас к следующему разделу:

https://zvelo.com/anatomy-of-full-path-url-hostname-protocol-path -more # parameters (Попробуйте)

Параметры

Параметры находятся в самом конце URL-адреса или внутри пути, в зависимости от реализации. Параметры URL представлены парами «ключ-значение», начинающимися с «?» И разделенными амперсандом «&».Они также могут быть динамически заданы в пути как значения, разделенные косой чертой и другими символами (в зависимости от используемой системы и ее реализации). Параметры обычно используются для отслеживания и аналитики, а также для кодирования конкретной информации для использования на веб-сайтах и ​​в приложениях.

Например, URL с параметрами:

  • https://www.example.com/solutions?user=123&color=blue
  • https://www.example.com/solutions/user/123 / color / blue

В качестве альтернативы вы можете найти URL-адрес с параметром отслеживания кампании Google, например:

  • https: // www.example.com/?utm_source=google&utm_medium=banner&utm_campaign=urlfilter

Другие соображения

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

Учитывая веб-фильтрацию, большинство «базовых» и «потребительских» решений не поддерживают категоризацию URL-адресов с полным путем (как это делает zveloDB) — и, следовательно, не учитывают путь / файл, параметры или протокол.Эти предложения полагаются на DNS / IP для фильтрации и защиты пользователей и сетевого трафика от доступа к «нежелательным» веб-сайтам. Это ограничение, поскольку позволяет назначать только классификацию (-ы) или нежелательные / злонамеренные идентификаторы на уровне сайта (или базового домена, также известного как имя хоста).

Что происходит, когда сайт скомпрометирован и этот «чистый» сайт с высокой посещаемостью начинает распространять вредоносный файл из одного источника или страницы? Для этого ознакомьтесь с нашим блогом о различиях между URL-адресами базового домена и полного пути.Или ознакомьтесь с другими нашими решениями для сетевой и кибербезопасности.

Надеемся, вы нашли это полезным! Теперь идите вперед и безопасно просматривайте!

URL-адрес базового домена и URL-адрес с полным путем. Какая разница?

Расчетное время чтения: 5 минут

В чем разница между базовым доменом и URL с полным путем?

Для среднестатистического интернет-пользователя строка URL-адреса предоставляет удобную строку поиска и инструмент «нечеткого» соответствия, открывающий сокровища Интернета одним нажатием клавиши «Enter».

Для тех из нас, кто занимается ИТ, разработкой программного обеспечения или сетевым администрированием, мы знаем, что все становится намного сложнее.Мы быстро скользим по кроличьей норе и попадаем в OSI, DNS, TLS, HTTPS, поддомены… ок. Сосредоточьтесь.

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

Краткое руководство по URL-адресам

В качестве краткого напоминания: URL (унифицированный указатель ресурса) — это особый подтип URI (унифицированный идентификатор ресурса) вместе с URN (унифицированное имя ресурса).Если вы запутались — вы не одиноки. Это сложно, и, наверное, поэтому вы здесь. Итак, вот краткая разбивка элементов в URL:

Структура URL с полным путем

Элементы URL включают:
  • Протокол (Схема)
  • Поддомен
  • Имя домена
  • Домен верхнего уровня (TLD)
  • Путь / файл (с расширением)
  • Параметры

Для более подробного объяснения ознакомьтесь с примечаниями и ссылками на ссылки в конце этого блога.

URL-адреса базового домена

Базовый домен — это зонтик, под которым находится весь сайт. Базовый домен состоит только из двух элементов URL:

  1. Имя домена
  2. Домен верхнего уровня (TLD)

Когда пользователь вводит базовый домен в строке URL (например, google.com, amazon .com и т. д.), DNS направляет их на IP-адрес сервера для домашней страницы соответствующего веб-сайта (конкретный адрес, например /index.htm или / home.html).

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

В реальном мире , внедрив базу данных классификации URL-адресов, весь интернет-трафик можно фильтровать, защищать или анализировать в реальном времени, обращаясь к кэшированной базе данных URL-адресов.Но какой уровень детализации категорий вам нужен?

URL с полным путем

Напротив, URL с полным путем относится к ТОЧНОМУ местоположению (т.е. странице, статье, файлу и т. Д.) И позволяет проводить высокоточный анализ и категоризацию веб-контента по указанному адресу. URL с полным путем включает не только домен и TLD, он также должен включать протокол (также известный как схема), поддомен (например, блог, поддержка и т. Д.), Путь / место назначения и, возможно, расширение файла, а также параметры.

То есть, он может включать в себя все следующее:

  1. Протокол
  2. Поддомен
  3. Доменное имя
  4. Домен верхнего уровня (TLD)
  5. Путь / файл
  6. Параметры (оптимальные)

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

Для целей категоризации каждая отдельная посещенная страница должна быть проанализирована и отнесена к категории с высокой степенью точности. Звучит довольно сложно? Это.

В реальном мире веб-контент регулярно меняется. Веб-сайты открываются, удаляются, контент меняется, и мир продолжает вращаться, что создает проблему для высокой точности на уровне страницы / сообщения / файла.Это означает, что каждую страницу необходимо регулярно анализировать и категоризировать (если не КАК она посещается).

zvelo выполняет в реальном времени классификацию URL-адресов по полному пути, используя передовую платформу искусственного интеллекта zvelo для высокоточной категоризации веб-контента на уровне страниц, публикаций и / или статей. Мы помогаем нашим партнерам определять важные сайты, модели поведения и категории для их приложений, а также помогаем наметить рабочий процесс и инфраструктуру развертывания, которые соответствуют их потребностям.

Хотите получить дополнительную информацию? Связаться с нами.

Давайте разберемся

Теперь, когда мы рассмотрели базовый домен и URL с полным путем, давайте немного разберемся, что это означает.

Возьмем базовый домен, например cnn.com . Веб-сайт CNN можно отнести к категориям «Международные новости» и «Потоковое и загружаемое видео» (что и есть в наших системах). Но это дает только высокоуровневую классификацию. На CNN миллионы страниц и статей обо всем, от тенниса и спорта до политики и технологий.

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

Это становится еще сложнее для гигантских социальных сетей, платформ и поисковых систем, таких как facebook, reddit или google.Чтобы достичь более высокого уровня детализации и точности для конкретного содержимого на каждой странице / файле, вам необходимо просмотреть полный путь.

Прочие соображения

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

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

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

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

Приложения, которые выигрывают от контроля и анализа на всем пути, включают:

Хотите протестировать свои собственные URL-адреса с помощью zveloLIVE?

Проверить категорию URL
Примечания и ссылки:

HTTP-запрос: пути URL

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

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

  • Звездочка (*) — используйте * для нуля или более экземпляров любых буквенно-цифровых символов.
  • Знак вопроса (?) — Использовать? для любого буквенно-цифрового символа.

Например:

  • Чтобы заблокировать весь веб-сайт и все его содержимое, вы должны ввести / * после имени домена.Чтобы заблокировать все страницы с именем хоста www.example.net , введите www.example.net/*.
  • Чтобы заблокировать все страницы, которые имеют определенный путь после любого имени хоста, например, www.example.net/wpadmin , введите * / wp-admin / *.
  • Чтобы заблокировать все пути URL-адресов веб-сайтов, которые содержат слово sex , например www.example.net/sexuality , введите * sex *.
    Для каталога с именем отдельного слова пол , например www.example.net/sex/images , введите * / sex / *.
  • Чтобы заблокировать URL-адреса веб-сайтов, заканчивающиеся на * .exe , введите * .exe.
  • Чтобы заблокировать URL-адреса веб-сайтов, заканчивающиеся тремя символами, введите example. ???. Это заблокирует example.com , example.org и example.gov , но не example.io .

Дополнительные сведения см. В разделах «О правилах и наборах правил» и «О регулярных выражениях».

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

Чтобы заблокировать веб-сайты с определенным текстом в пути URL:

  1. В конфигурации действия HTTP-прокси выберите HTTP-запрос> URL-пути .
    Появится список правил (простой вид).
  2. Настройте действие правила.
    Для получения дополнительной информации см. Добавление, изменение или удаление правил.
  3. Чтобы изменить настройки для другой категории в этом прокси, см. Тему для этой категории.
  4. Сохраните конфигурацию.

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

Для получения дополнительной информации о предопределенных действиях прокси см. О действиях прокси.

См. Также

О HTTP-прокси

HTML и URL

HTML и URL

Всемирная паутина — это сеть информационных ресурсов. Паутина полагается на три механизма, которые делают эти ресурсы доступными для максимально широкая аудитория:

  1. Единая схема именования для размещения ресурсов в Интернете, e.грамм. URL
  2. Протоколы для доступа к именованным ресурсам через Интернет. например HTTP
  3. Гипертекст для удобной навигации по ресурсам. например HTML

HTML-документы используют URL-адреса для определения гипертекстовых ссылок. Ниже приводится краткое введение в URL-адреса.

Каждый ресурс, доступный в Интернете — HTML-документ, изображение, видео. клип, программа и т. д. — имеет адрес, который может быть закодирован Унифицированный указатель ресурсов или «URL» (определенный в [RFC1738]).

URL-адреса обычно состоят из трех частей:

  1. Схема, идентифицирующая протокол, используемый для доступа к ресурсу.
  2. Имя компьютера, на котором размещен ресурс.
  3. Имя самого ресурса в виде пути.

Рассмотрим URL-адрес, который обозначает текущую спецификацию HTML:

http://www.w3.org/TR/WD-html4/cover.html
 

Этот URL-адрес можно читать следующим образом: Используйте протокол HTTP (см. [RFC2068]), чтобы передать данные, находящиеся на машине www.w3.org в файле «/TR/WD-html4/cover.html». Другие схемы, которые вы можете увидеть в HTML-документах включите mailto для электронной почты и ftp для FTP.

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

Набор символов URL-адресов, отображаемых в HTML, определен в [RFC1738].

5.1.1 Идентификаторы фрагментов

Некоторые URL-адреса относятся к местоположению внутри ресурса.Как указано в [RFC1808], этот тип URL заканчивается знаком «#», за которым следует идентификатор привязки (так называемый «идентификатор фрагмента»). Например, вот URL-адрес, указывающий на привязку с именем section_2 :

http://somesite.com/html/top.html#section_2
 

5.1.2 Относительные URL-адреса

Относительный URL-адрес (определенный в [RFC1808]) не содержит любой протокол или информацию о машине. Его путь обычно относится к ресурс на том же компьютере, что и текущий документ.Родственник URL-адреса могут содержать компоненты относительного пути («..» означает на один уровень выше в иерархии, определяемой путем), и может содержать идентификаторы фрагментов.

Относительные URL-адреса преобразуются в полные URL-адреса с использованием базового URL-адреса. [RFC1808] определяет нормативный алгоритм этого процесса.

В качестве примера относительного разрешения URL предположим, что у нас есть базовая URL «http://www.acme.com/support/intro.html». Относительный URL в следующая разметка для гипертекстовой ссылки:

   Поставщики 
 

будет расширен до полного URL «http://www.acme.com/support/suppliers.html», а относительный URL-адрес в следующей разметке для изображения

  logo
 

будет расширен до полного URL «http://www.acme.com/icons/logo.gif».

5.1.3 URL-адреса в HTML

В HTML URL-адреса играют роль в следующих ситуациях:

  • ссылка на другой документ или ресурс, (см. A и LINK элементов).
  • ссылка на внешнюю таблицу стилей или скрипт (см. ССЫЛКА и SCRIPT элементов).
  • изображений, объектов и апплетов для включения в страницу (см. IMG , ОБЪЕКТ , APPLET и INPUT элементов).
  • карты изображений (см. Карту MAP и ПЛОЩАДЬ элементов).
  • Подача формы (см. ФОРМУ ).
  • рамы (см. РАМКА и IFRAME элементов).
  • со ссылкой на внешнюю ссылку (см. Q , BLOCKQUOTE , INS и DEL элементы).
  • относится к соглашениям о метаданных, описывающих документ (см. элемент HEAD ).

Пользовательские агенты должны вычислять базовый URL-адрес для разрешения относительной URL-адреса согласно [RFC1808]. Ниже приводится краткое изложение того, как [RFC1808] применяется к HTML. Пользовательские агенты должны рассчитывать базовый URL в соответствии с следующие приоритеты (от высшего приоритета к низшему):

  1. Базовый URL-адрес задается элементом BASE .
  2. Базовый URL-адрес задается заголовком HTTP (см. [RFC2068]).
  3. По умолчанию базовый URL-адрес текущего документа.

Кроме того, элементы OBJECT и APPLET определяют атрибуты, которые принимают приоритет над значением, установленным BASE элемент. Пожалуйста, ознакомьтесь с определениями этих элементов для получения дополнительной информации. информация о проблемах с URL-адресами, относящимися к ним.

Элементы ссылки, указанные в заголовках HTTP, обрабатываются точно так же, как LINK элементы, которые явно отображаются в документ.

MAILTO URL

Помимо URL-адресов HTTP, авторы могут захотеть включить MAILTO URL-адреса (см. [RFC1738]) в своих документах. URL-адреса MAILTO вызывают отправку электронной почты некоторым адрес электронной почты. Например, автор может создать ссылку, которая, при активации заставляет пользовательский агент открыть почтовую программу с адресом назначения в поле «Кому:».

MAILTO URL-адреса имеют следующий синтаксис:

mailto: адрес электронной почты
 

Пользовательские агенты могут поддерживать расширения URL MAILTO, которые не пока что Интернет-стандарты (e.g., добавление информации о субъекте к URL с синтаксисом «? Subject = my% 20subject», где пробелы заменяются на «% 20»). Некоторые пользовательские агенты также поддерживают «? Cc = адрес электронной почты «.

Настройки пути URL | Сайты

Что такое URL-путь?

Путь URL-адреса — это путь, по которому браузер будет следовать в иерархии доменов вашего сайта, чтобы найти определенный фрагмент контента.

Создание пути URL-адреса по умолчанию в Drupal

По умолчанию Drupal настроен на создание URL-адреса для вашей страницы при ее создании и размещает ссылку в корне вашего доменного имени (т.е.е .: https://websites.ucr.edu/my-new-page). Этот URL основан на информации, которую вы вводите в поле Title типа контента. Для этой конкретной страницы по умолчанию он будет иметь форму «url-path-settings», если не указан другой параметр пути.

Зачем нужны настройки пути URL?

Использование этого параметра позволяет делать две вещи:

  1. Точно отразите отношение этой страницы к другому содержимому вашего сайта.
    Пример: пользователь создает новую базовую страницу, а затем система автоматически генерирует путь URL:
    http: // examplesite.ucr.acsitefactory.com/url-path-settings
    На самом деле эта страница должна быть http://examplesite.ucr.acsitefactory.com/training/path-settings
    Вторая будет визуально отражать ее положение на сайте как кусок контента, который находится в разделе «Обучение
  2. »
  3. При обновлении настроек пути URL-адреса также обновляется навигационная цепочка страницы, что улучшает работу ваших посетителей в браузере, поскольку позволяет им легко переходить к родительскому контенту.
Создайте свой собственный путь URL
  1. На странице, путь URL-адреса которой вы хотите изменить, посмотрите вправо, там есть панель Дополнительные параметры .
  2. Щелкните раздел Параметры пути URL , чтобы развернуть его.
  3. Снимите флажок Генерировать автоматический псевдоним URL .
  4. Поле псевдонима URL станет незакрашенным, и вы сможете ввести свой собственный URL. Убедитесь, что URL-адрес начинается с обратной косой черты (/), а слова разделяются дефисом (). Не используйте пробелы, лучше всего использовать строчные буквы.
    Пример
    Оригинал: / url-path-settings
    Обновлено: / training / path-settings или / path-settings (если не в определенном разделе)
  5. Прокрутите экран вниз и нажмите Сохранить для завершения.

urllib.parse — Разбор URL-адресов на компоненты — документация Python 3.9.7

Исходный код: Lib / urllib / parse.py


Этот модуль определяет стандартный интерфейс для нарушения Uniform Resource Locator (URL) строки в компонентах (схема адресации, сетевое расположение, путь и т. д.), чтобы объединить компоненты обратно в строку URL и преобразовать «относительный URL» на абсолютный URL-адрес с «базовым URL-адресом».

Модуль был разработан в соответствии с RFC в Интернете по Relative Uniform. Локаторы ресурсов.Он поддерживает следующие схемы URL: файл , ftp , gopher , hdl , http , https , imap , mailto , ммс , новости , nntp , prospero , rsync , rtsp , rtspu , sftp , shttp , sip , sips , snews , svn , svn + ssh , telnet , wais , ws , wss .

Модуль urllib.parse определяет функции, которые можно разделить на два основных категории: парсинг URL и цитирование URL. Они подробно описаны в следующие разделы.

Разбор URL

Функции синтаксического анализа URL-адресов сосредоточены на разделении строки URL-адреса на ее компоненты, или при объединении компонентов URL в строку URL.

urllib.parse. urlparse ( urlstring , scheme = » , allow_fragments = True )

Разбирает URL-адрес на шесть компонентов, возвращая именованный кортеж из 6 элементов.Этот соответствует общей структуре URL: схема: // netloc / путь; параметры? Запрос # фрагмент . Каждый элемент кортежа представляет собой строку, возможно, пустую. Компоненты не разбиты на более мелкие части (например, сетевое местоположение представляет собой одну строку), а% побеги не расширяются. Указанные выше разделители не являются частью результат, за исключением ведущей косой черты в компоненте пути , который сохраняется, если настоящее время. Например:

 >>> из urllib.анализировать импорт URL
>>> o = urlparse ('http://www.cwi.nl:80/%7Eguido/Python.html')
>>> о
ParseResult (scheme = 'http', netloc = 'www.cwi.nl: 80', path = '/% 7Eguido / Python.html',
            params = '', query = '', фрагмент = '')
>>> o.scheme
'http'
>>> o.port
80
>>> o.geturl ()
'http://www.cwi.nl:80/%7Eguido/Python.html'
 

Следуя спецификациям синтаксиса в RFC 1808 , urlparse распознает netloc, только если он правильно введен с помощью «//».В противном случае Предполагается, что ввод является относительным URL-адресом и, следовательно, должен начинаться с компонент пути.

 >>> из urllib.parse import urlparse
>>> urlparse ('// www.cwi.nl:80/%7Eguido/Python.html')
ParseResult (scheme = '', netloc = 'www.cwi.nl: 80', path = '/% 7Eguido / Python.html',
            params = '', query = '', фрагмент = '')
>>> urlparse ('www.cwi.nl/%7Eguido/Python.html')
ParseResult (scheme = '', netloc = '', path = 'www.cwi.nl /% 7Eguido / Python.html',
            params = '', query = '', фрагмент = '')
>>> urlparse ('справка / Python.html ')
ParseResult (scheme = '', netloc = '', path = 'help / Python.html', params = '',
            запрос = '', фрагмент = '')
 

Схема Аргумент задает схему адресации по умолчанию, которая используется только в том случае, если URL-адрес не указан. Он должен быть одного типа (текст или байты) как urlstring , за исключением того, что значение по умолчанию '' равно всегда разрешено, и при необходимости автоматически преобразуется в b '' .

Если аргумент allow_fragments равен false, идентификаторы фрагментов не признал.Вместо этого они анализируются как часть пути, параметры или компонент запроса, а фрагмент установлен на пустую строку в возвращаемое значение.

Возвращаемое значение — именованный кортеж, что означает, что его элементы могут можно получить доступ по индексу или как именованные атрибуты, а именно:

Атрибут

Индекс

Значение

Значение, если отсутствует

схема

0

Спецификатор схемы URL

схема параметр

netloc

1

Часть сетевого расположения

пустая строка

путь

2

Иерархический путь

пустая строка

параметры

3

Параметры последнего пути элемент

пустая строка

запрос

4

Компонент запроса

пустая строка

фрагмент

5

Идентификатор фрагмента

пустая строка

имя пользователя

Имя пользователя

Нет

пароль

Пароль

Нет

имя хоста

Имя хоста (нижний регистр)

Нет

порт

Номер порта как целое число, при наличии

Нет

Чтение атрибута порта вызовет ошибку ValueError , если в URL указан неверный порт.См. Раздел Структурированные результаты анализа для получения дополнительной информации об объекте результата.

Несовпадающие квадратные скобки в атрибуте netloc вызовут ValueError .

символов в атрибуте netloc , которые разлагаются под NFKC нормализация (как используется кодировкой IDNA) в любой из /, ? , г. # , @ или : вызовет ошибку ValueError . Если URL-адрес разложить перед синтаксическим анализом, ошибки не возникнет.

Как и все именованные кортежи, у подкласса есть несколько дополнительных методов. и атрибуты, которые особенно полезны. Один из таких методов — _replace () . Метод _replace () вернет новый объект ParseResult, заменяющий указанный поля с новыми значениями.

 >>> из urllib.parse import urlparse
>>> u = urlparse ('// www.cwi.nl:80/%7Eguido/Python.html')
>>> ты
ParseResult (scheme = '', netloc = 'www.cwi.nl: 80', path = '/% 7Eguido / Python.html ',
            params = '', query = '', фрагмент = '')
>>> u._replace (схема = 'http')
ParseResult (scheme = 'http', netloc = 'www.cwi.nl: 80', path = '/% 7Eguido / Python.html',
            params = '', query = '', фрагмент = '')
 

Изменено в версии 3.2: Добавлены возможности синтаксического анализа URL-адресов IPv6.

Изменено в версии 3.3: фрагмент теперь анализируется для всех схем URL (если только allow_fragment не false) в соответствии с RFC 3986 . Ранее белый список схемы, поддерживающие фрагменты, существовали.

Изменено в версии 3.6: номера портов вне допустимого диапазона теперь вызывают ошибку ValueError вместо возврат Нет .

Изменено в версии 3.8: символы, влияющие на синтаксический анализ netloc при нормализации NFKC, будут теперь вызовите ValueError .

urllib.parse. parse_qs ( qs , keep_blank_values ​​= False , strict_parsing = False , encoding = ‘utf-8’ , errors = ‘replace’ , max_num_fields = None , max_num_fields = None , )

Разобрать строку запроса, заданную как строковый аргумент (данные типа application / x-www-form-urlencoded ).Данные возвращаются в виде толковый словарь. Ключи словаря — это уникальные имена переменных запроса и значения — это списки значений для каждого имени.

Необязательный аргумент keep_blank_values ​​ — это флаг, указывающий, пусто ли значения в запросах с процентной кодировкой следует рассматривать как пустые строки. Истинная ценность указывает, что пробелы следует сохранять как пустые строки. По умолчанию false значение указывает, что пустые значения должны игнорироваться и обрабатываться так, как если бы они были не включено.

Необязательный аргумент strict_parsing — это флаг, указывающий, что делать с ошибки разбора. Если false (по умолчанию), ошибки игнорируются. Если правда, ошибки вызывают исключение ValueError .

Необязательные параметры кодирования ошибок и Параметры определяют способ декодирования последовательности, закодированные в процентах, в символы Юникода, как это принято bytes.decode () метод.

Необязательный аргумент max_num_fields — максимальное количество полей для читать.Если установлено, то выдает ошибку ValueError , если их больше max_num_fields прочитанных полей.

Необязательный аргумент разделитель — это символ, используемый для разделения аргументы запроса. По умолчанию это и .

Используйте функцию urllib.parse.urlencode () (с функцией dosq параметр установлен на True ), чтобы преобразовать такие словари в запрос струны.

Изменено в версии 3.2: добавлено кодирования и ошибок параметров.

Изменено в версии 3.8: Добавлен параметр max_num_fields .

Изменено в версии 3.9.2: Добавлен параметр разделителя со значением по умолчанию и . Python версии, предшествующие Python 3.9.2, позволяли использовать как ; и и как разделитель параметров запроса. Это было изменено, чтобы разрешить только один ключ-разделитель с и в качестве разделителя по умолчанию.

urllib.разобрать. parse_qsl ( qs , keep_blank_values ​​= False , strict_parsing = False , encoding = ‘utf-8’ , errors = ‘replace’ , max_numtor_fields = None , max_numtor_fields = None , ‘)

Разобрать строку запроса, заданную как строковый аргумент (данные типа application / x-www-form-urlencoded ). Данные возвращаются в виде списка пары имя, значение.

Необязательный аргумент keep_blank_values ​​ — это флаг, указывающий, пусто ли значения в запросах с процентной кодировкой следует рассматривать как пустые строки.Истинная ценность указывает, что пробелы следует сохранять как пустые строки. По умолчанию false значение указывает, что пустые значения должны игнорироваться и обрабатываться так, как если бы они были не включено.

Необязательный аргумент strict_parsing — это флаг, указывающий, что делать с ошибки разбора. Если false (по умолчанию), ошибки игнорируются. Если правда, ошибки вызывают исключение ValueError .

Необязательные параметры кодирования ошибок и Параметры определяют способ декодирования последовательности, закодированные в процентах, в символы Юникода, как это принято байт.decode () метод.

Необязательный аргумент max_num_fields — максимальное количество полей для читать. Если установлено, то выдает ошибку ValueError , если их больше max_num_fields прочитанных полей.

Необязательный аргумент разделитель — это символ, используемый для разделения аргументов запроса. По умолчанию это и .

Используйте функцию urllib.parse.urlencode () для преобразования таких списков пар в строки запроса.

Изменено в версии 3.2: добавлено кодирования и ошибок параметров.

Изменено в версии 3.8: Добавлен параметр max_num_fields .

Изменено в версии 3.9.2: Добавлен параметр разделителя со значением по умолчанию и . Python версии, предшествующие Python 3.9.2, позволяли использовать как ; и и как разделитель параметров запроса. Это было изменено, чтобы разрешить только один ключ-разделитель с и в качестве разделителя по умолчанию.

urllib.parse. urlunparse ( частей )

Создайте URL из кортежа, возвращенного функцией urlparse () . частей Аргумент может быть любым итерируемым из шести пунктов. Это может привести к небольшому другой, но эквивалентный URL-адрес, если изначально проанализированный URL-адрес содержал ненужные разделители (например, ? с пустым запросом; RFC заявляет, что они эквивалентны).

urllib.разобрать. urlsplit ( urlstring , scheme = » , allow_fragments = True )

Это похоже на urlparse () , но не разделяет параметры из URL. Обычно его следует использовать вместо urlparse () , если более свежий URL синтаксис, позволяющий применять параметры к каждому сегменту участка пути URL-адреса (см. RFC 2396 ). Отдельная функция нужна для разделите сегменты пути и параметры.Эта функция возвращает 5 элементов именованный кортеж:

 (схема адресации, сетевое расположение, путь, запрос, идентификатор фрагмента).
 

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

Атрибут

Индекс

Значение

Значение, если отсутствует

схема

0

Спецификатор схемы URL

схема параметр

netloc

1

Часть сетевого расположения

пустая строка

путь

2

Иерархический путь

пустая строка

запрос

3

Компонент запроса

пустая строка

фрагмент

4

Идентификатор фрагмента

пустая строка

имя пользователя

Имя пользователя

Нет

пароль

Пароль

Нет

имя хоста

Имя хоста (нижний регистр)

Нет

порт

Номер порта как целое число, при наличии

Нет

Чтение атрибута порта вызовет ошибку ValueError , если в URL указан неверный порт.См. Раздел Структурированные результаты анализа для получения дополнительной информации об объекте результата.

Несовпадающие квадратные скобки в атрибуте netloc вызовут ValueError .

символов в атрибуте netloc , которые разлагаются под NFKC нормализация (как используется кодировкой IDNA) в любой из /, ? , г. # , @ или : вызовет ошибку ValueError . Если URL-адрес разложить перед синтаксическим анализом, ошибки не возникнет.

В соответствии со спецификацией WHATWG, обновляющей RFC 3986, перевод строки ASCII \ n , \ r и табуляция \ t символов удаляются из URL.

Изменено в версии 3.6: номера портов вне допустимого диапазона теперь вызывают ошибку ValueError вместо возврат Нет .

Изменено в версии 3.8: символы, влияющие на синтаксический анализ netloc при нормализации NFKC, будут теперь вызовите ValueError .

Изменено в версии 3.9.5: символы новой строки и табуляции ASCII удаляются из URL-адреса.

urllib.parse. urlunsplit ( частей )

Объедините элементы кортежа, возвращенные функцией urlsplit () , в полный URL-адрес в виде строки. Аргумент частей может быть любым из пяти элементов. повторяемый. Это может привести к немного другому, но эквивалентному URL-адресу, если Первоначально проанализированный URL-адрес содержал ненужные разделители (например, знак? с пустым запросом; RFC заявляет, что они эквивалентны).

urllib.parse. urljoin ( base , url , allow_fragments = True )

Создайте полный («абсолютный») URL-адрес, объединив «базовый URL-адрес» ( базовый ) с другой URL ( url ). Неформально здесь используются компоненты базового URL, в в частности схему адресации, расположение в сети и (часть) path, чтобы указать недостающие компоненты в относительном URL-адресе. Например:

 >>> из urllib.анализировать импорт urljoin
>>> urljoin ('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html')
'http://www.cwi.nl/%7Eguido/FAQ.html'
 

Аргумент allow_fragments имеет то же значение и значение по умолчанию, что и для urlparse () .

Примечание

Если url является абсолютным URL (то есть он начинается с // или схемы : // ), url Имя хоста и / или схема будут представлены в результате. Например:

 >>> urljoin ('http: // www.cwi.nl/%7Eguido/Python.html ',
... '//www.python.org/%7Eguido')
'http://www.python.org/%7Eguido'
 

Если вы не хотите этого поведения, предварительно обработайте url с помощью urlsplit () и urlunsplit () , удалив возможные схемы и netloc частей.

Изменено в версии 3.5: Поведение обновлено в соответствии с семантикой, определенной в RFC 3986 .

urllib.parse. urldefrag ( url )

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

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

Атрибут

Индекс

Значение

Значение, если отсутствует

url

0

URL без фрагмента

пустая строка

фрагмент

1

Идентификатор фрагмента

пустая строка

См. Раздел «Результаты структурированного анализа» для получения дополнительной информации о результате. объект.

Изменено в версии 3.2: Результатом является структурированный объект, а не простой кортеж из двух элементов.

urllib.parse. развернуть ( url )

Извлечь URL-адрес из обернутого URL-адреса (то есть строки, отформатированной как , , URL: scheme: // host / path или схема : // хост / путь ). Если url не является обернутым URL, он возвращается без изменений.

Анализ байтов в кодировке ASCII

Функции синтаксического анализа URL-адресов были изначально разработаны для работы с символами. только струны. На практике полезно уметь правильно манипулировать цитируемые и закодированные URL-адреса как последовательности байтов ASCII. Соответственно, Все функции синтаксического анализа URL в этом модуле работают с байтами, и bytearray объектов в дополнение к str объектам.

Если переданы данные str , результат также будет содержать только str data.Если байтов или байтов, массив данных передано, результат будет содержать только байт данных .

Попытка смешать данные str с байтами или bytearray в одном вызове функции приведет к TypeError возникает при попытке передать не-ASCII байтовые значения вызовут ошибку UnicodeDecodeError .

Для упрощения преобразования объектов результата между str и байт , все возвращаемые значения из функций синтаксического анализа URL предоставляют либо метод encode () (когда результат содержит str data) или decode () метод (когда результат содержит байтов данные).Сигнатуры этих методов соответствуют сигнатурам соответствующих str и байтов методы (за исключением того, что кодировка по умолчанию это 'ascii' , а не 'utf-8' ). Каждый дает значение соответствующий тип, содержащий либо байтов, либо данных (для encode () методы) или str data (для decode () методов).

Приложения, которые должны работать с потенциально неправильно цитируемыми URL-адресами которые могут содержать данные, отличные от ASCII, должны будут выполнить собственное декодирование из байты в символы перед вызовом методов синтаксического анализа URL.

Поведение, описанное в этом разделе, относится только к синтаксическому анализу URL-адресов. функции. Функции цитирования URL-адресов используют свои собственные правила при создании или потребляют байтовые последовательности, как описано в документации к отдельные функции цитирования URL.

Изменено в версии 3.2: функции синтаксического анализа URL теперь принимают последовательности байтов в кодировке ASCII

Результаты структурированного анализа

Объекты результата из urlparse () , urlsplit () и urldefrag () Функции являются подклассами кортежа типа .Эти подклассы добавляют атрибуты, перечисленные в документации для эти функции, поддержка кодирования и декодирования, описанная в предыдущий раздел, а также дополнительный метод:

urllib.parse.SplitResult. geturl ()

Вернуть повторно объединенную версию исходного URL-адреса в виде строки. Это может отличается от исходного URL тем, что схема может быть нормализована до более низкой корпус и пустые компоненты могут быть отброшены. В частности, пустые параметры, запросы и идентификаторы фрагментов будут удалены.

Для результатов urldefrag () будут удалены только идентификаторы пустых фрагментов. Для результатов urlsplit () и urlparse () все отмеченные изменения будут сделано для URL-адреса, возвращаемого этим методом.

Результат этого метода остается неизменным, если он передается обратно через оригинал. функция синтаксического анализа:

 >>> из urllib.parse import urlsplit
>>> url = 'HTTP://www.Python.org/doc/#'
>>> r1 = urlsplit (url)
>>> r1.geturl ()
'http://www.Python.org/doc/'
>>> r2 = urlsplit (r1.geturl ())
>>> r2.geturl ()
'http://www.Python.org/doc/'
 

Следующие классы предоставляют реализации структурированного синтаксического анализа. результатов при эксплуатации по ул. объектов:

класс urllib.parse. DefragResult ( url , фрагмент )

Конкретный класс для urldefrag () результатов, содержащих str данные.Метод encode () возвращает DefragResultBytes пример.

класс urllib.parse. ParseResult ( схема , netloc , путь , параметры , запрос , фрагмент )

Класс бетона для urlparse () результатов, содержащих str данные. Метод encode () возвращает ParseResultBytes пример.

класс urllib.parse. SplitResult ( схема , netloc , путь , запрос , фрагмент )

Конкретный класс для urlsplit () результатов, содержащих str данные. Метод encode () возвращает SplitResultBytes пример.

Следующие классы обеспечивают реализацию результатов синтаксического анализа, когда работает с байтами или bytearray объектов:

класс urllib.разобрать. DefragResultBytes ( url , фрагмент )

Конкретный класс для urldefrag () результатов, содержащих байтов данные. Метод decode () возвращает DefragResult пример.

класс urllib.parse. ParseResultBytes ( схема , netloc , путь , параметры , запрос , фрагмент )

Конкретный класс для urlparse () результатов, содержащих байтов данные.Метод decode () возвращает ParseResult пример.

класс urllib.parse. SplitResultBytes ( схема , netloc , путь , запрос , фрагмент )

Конкретный класс для urlsplit () результатов, содержащих байтов данные. Метод decode () возвращает SplitResult пример.

Цитирование URL

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

urllib.parse. quote ( string , safe = ‘/’ , encoding = None , errors = None )

Заменить специальные символы в строке , используя escape-последовательность % xx . Письма, цифры и символы '_.- ~ ' никогда не цитируются. По умолчанию это Функция предназначена для цитирования раздела пути в URL-адресе. Необязательный safe Параметр определяет дополнительные символы ASCII, которые не должны кавычки — его значение по умолчанию '/' .

строка может быть либо str , либо байтовым объектом .

Изменено в версии 3.7: перенесено с RFC 2396 на RFC 3986 для цитирования строк URL. «~» Сейчас входит в набор безоговорочных персонажей.

Необязательные параметры кодирования , ошибки и , параметры определяют, как поступать с ошибками. символы, отличные от ASCII, которые принимаются методом str.encode () . кодировка по умолчанию 'utf-8' . ошибок по умолчанию 'строгий' , что означает, что неподдерживаемые символы вызывают UnicodeEncodeError . Кодировка Ошибки и Не следует указывать , если строка является байтов или TypeError .

Обратите внимание, что цитата (строка, безопасная, кодировка, ошибки) эквивалентна quote_from_bytes (строка.encode (кодировка, ошибки), безопасно) .

Пример: quote ('/ El Niño /') дает '/ El% 20Ni% C3% B1o /' .

urllib.parse. quote_plus ( строка , safe = » , encoding = None , errors = None )

Аналогично quote () , но также заменяем пробелы знаками плюса, как требуется для цитирование значений формы HTML при построении строки запроса для перехода в URL.Знаки плюса в исходной строке экранируются, если они не включены в сейф . У него также нет safe по умолчанию на '/' .

Пример: quote_plus ('/ El Niño /') дает '% 2FEl + Ni% C3% B1o% 2F' .

urllib.parse. quote_from_bytes ( байтов , safe = ‘/’ )

Как quote () , но принимает объект байтов , а не str и не выполняет кодирование строки в байты.

Пример: quote_from_bytes (b'a & \ xef ') дает 'a% 26% EF' .

urllib.parse. unquote ( string , encoding = 'utf-8' , errors = 'replace' )

Заменить % xx escape-последовательностями их односимвольным эквивалентом. Необязательные параметры кодирования и ошибок указывают, как декодировать последовательности, закодированные в процентах, в символы Юникода, как это принято байт.decode () метод.

строка может быть либо str , либо байтовым объектом .

кодировка по умолчанию 'utf-8' . ошибок по умолчанию 'заменить' , что означает замену недопустимых последовательностей символом-заполнителем.

Пример: unquote ('/ El% 20Ni% C3% B1o /') дает '/ El Niño /' .

Изменено в версии 3.9: строка Параметр поддерживает байты и объекты str (ранее только str).

urllib.parse. unquote_plus ( строка , кодировка = 'utf-8' , ошибок = 'заменить' )

Аналогично unquote () , но при необходимости замените знаки плюса пробелами. для удаления кавычек из значений HTML-формы.

строка должна быть строкой .

Пример: unquote_plus ('/ El + Ni% C3% B1o /') дает '/ El Niño /' .

urllib.разобрать. unquote_to_bytes ( строка )

Заменить % xx escape-последовательности их однооктетным эквивалентом и вернуть байт Объект .

строка может быть либо str , либо байтовым объектом .

Если это строка , строка , неэкранированные символы, отличные от ASCII, в строке закодированы в байты UTF-8.

Пример: unquote_to_bytes ('a% 26% EF') возвращает b'a & \ xef '.

urllib.parse. urlencode ( query , dosq = False , safe = '' , encoding = None , errors = None , quote_via = quote_plus )

Преобразование объекта сопоставления или последовательности двухэлементных кортежей, которые могут содержать str или байтов объектов в кодировке ASCII с процентной кодировкой текстовая строка. Если результирующая строка должна использоваться как данные для POST работа с функцией urlopen () , затем он должен быть закодирован в байтах, иначе это приведет к Ошибка типа .

Результирующая строка представляет собой серию из пар ключ = значение , разделенных '&' символы, где ключ и значение заключены в кавычки с использованием quote_via функция. По умолчанию quote_plus () используется для цитирования значений, которые означает, что пробелы заключаются в кавычки как '+' символов, а символы ‘/’ кодируется как % 2F , что соответствует стандарту для запросов GET ( application / x-www-form-urlencoded ).Альтернативная функция, которая может быть передается как quote_via is quote () , который будет кодировать пробелы как % 20 и не кодировать символы «/». Для максимального контроля над тем, что цитируется, используйте укажите и укажите значение для safe .

Когда последовательность двухэлементных кортежей используется в качестве запроса аргумент, первый элемент каждого кортежа является ключом, а второй - ценить. Элемент значения сам по себе может быть последовательностью, и в этом случае, если необязательный параметр dosq оценивается как True , индивидуальный ключ = значение пар, разделенных '&' , генерируются для каждого элемента последовательность значений для ключа.Порядок параметров в закодированном строка будет соответствовать порядку кортежей параметров в последовательности.

Safe , кодирование ошибок и Параметры передаются в quote_via ( кодирует ошибки и параметры только передаются когда элементом запроса является str ).

Чтобы отменить этот процесс кодирования, используются parse_qs () и parse_qsl () . предоставляется в этом модуле для синтаксического анализа строк запроса в структурах данных Python.

Обратитесь к примерам urllib, чтобы узнать, как urllib.parse.urlencode () Метод может использоваться для генерации запроса строка URL-адреса или данных для запроса POST.

Изменено в версии 3.2: запрос поддерживает байтовые и строковые объекты.

Новое в версии 3.5: quote_via параметр .

См. Также

WHATWG - Стандарт URL-адресов

Рабочая группа по стандарту URL-адресов, который определяет URL-адреса, домены, IP-адреса, application / x-www-form-urlencoded формат и их API.

RFC 3986 - унифицированные идентификаторы ресурсов

Это текущий стандарт (STD66). Любые изменения в модуле urllib.parse должен соответствовать этому. Могли наблюдаться определенные отклонения, которые в основном для целей обратной совместимости и для некоторых де-факто требования к синтаксическому анализу, которые обычно наблюдаются в основных браузерах.

RFC 2732 - Формат буквальных адресов IPv6 в URL.

Определяет требования к синтаксическому анализу URL-адресов IPv6.

RFC 2396 - Uniform Resource Identifiers (URI): Generic Syntax

Документ, описывающий общие синтаксические требования для Uniform Resource Имена (URN) и унифицированные указатели ресурсов (URL).

RFC 2368 - схема URL mailto.

Требования к синтаксическому анализу для схем URL mailto.

RFC 1808 - Относительные унифицированные указатели ресурсов

Этот запрос комментариев включает правила для присоединения абсолютного и относительный URL-адрес, включая изрядное количество «ненормальных примеров», которые регулируют лечение пограничных случаев.

RFC 1738 - унифицированные указатели ресурсов (URL)

Это определяет формальный синтаксис и семантику абсолютных URL.

az сетевое приложение-шлюз URL-путь-карта | Документы Microsoft

Управление картами путей URL-адресов шлюза приложений.

В этой статье

Команды

az сетевое приложение-шлюз URL-путь-карта создать

Создайте карту пути URL.

Карта должна быть создана как минимум с одним правилом.Эта команда требует создания первого правила во время создания карты. Чтобы узнать больше, посетите https://docs.microsoft.com/azure/application-gateway/application-gateway-create-url-route-cli.

  az network application-gateway url-path-map create --gateway-name
                                                   --имя
                                                   --путь
                                                   --ресурс-группа
                                                   [--адрес-пул]
                                                   [--default-адрес-пул]
                                                   [--default-http-settings]
                                                   [--default-redirect-config]
                                                   [--default-rewrite-rule-set]
                                                   [--http-settings]
                                                   [--Нет, подождите]
                                                   [--redirect-config]
                                                   [--rewrite-набор-правил]
                                                   [--rule-name]
                                                   [--подписка]
                                                   [--waf-policy]  

Примеры

Создайте карту пути URL с правилом.

  az сетевое приложение-шлюз url-path-map create -g MyResourceGroup --gateway-name MyAppGateway \
    -n MyUrlPathMap - имя-правила MyUrlPathMapRule1 --paths / mypath2 / * --address-pool MyAddressPool \
    --default-address-pool MyAddressPool --http-settings MyHttpSettings --default-http-settings MyHttpSettings  

Обязательные параметры

- имя-шлюза

Имя шлюза приложений.

- имя -n

Имя карты пути URL.

- пути

Список путей, разделенных пробелами, для связи с правилом. Допустимые пути начинаются и заканчиваются на «/» (например: «/ bar /»).

- группа ресурсов -g

Имя группы ресурсов. Группу по умолчанию можно настроить с помощью az configure --defaults group = .

Дополнительные параметры

--адрес-пул

Имя или идентификатор пула внутренних адресов для использования с созданным правилом.

- пул адресов по умолчанию

Имя или идентификатор пула внутренних адресов по умолчанию, если он отличается от --address-pool.

- по умолчанию-http-настройки

Имя или идентификатор настроек HTTP по умолчанию, если они отличаются от --http-settings.

--default-redirect-config

Имя или идентификатор конфигурации перенаправления по умолчанию.

- набор правил перезаписи по умолчанию

Имя или идентификатор набора правил перезаписи по умолчанию, если он отличается от --rewrite-rule-set.

- http-настройки

Имя или идентификатор настроек HTTP для использования с созданным правилом.

- не ждать

Не дожидайтесь завершения длительной операции.

--redirect-config

Имя или идентификатор конфигурации перенаправления для использования с созданным правилом.

- набор правил перезаписи

Имя или идентификатор набора правил перезаписи. Если не указано, будет использоваться карта по умолчанию.

- имя-правила

Имя правила карты URL-путей.

- подписка

Название или идентификатор подписки.Вы можете настроить подписку по умолчанию, используя az account set -s NAME_OR_ID .

--waf-политика

Имя или идентификатор ресурса политики межсетевого экрана.

Глобальные параметры

- отладка

Увеличьте подробность ведения журнала, чтобы отображались все журналы отладки.

--help -h

Показать это справочное сообщение и выйти.

- только показывать ошибки

Показывать только ошибки без предупреждения.

- выход -o

- запрос

- вербальный

Увеличить подробность ведения журнала.Используйте --debug для полных журналов отладки.

az сетевое приложение-шлюз URL-путь-карта удалить

Удалить карту пути URL.

  az сетевое приложение-шлюз URL-путь-карта удалить [--gateway-name]
                                                   [--ids]
                                                   [--имя]
                                                   [--Нет, подождите]
                                                   [--resource-group]
                                                   [--подписка]  

Примеры

Удалить карту пути URL.

  az сетевое приложение-шлюз url-path-map delete -g MyResourceGroup --gateway-name MyAppGateway -n MyUrlPathMap  

Дополнительные параметры

- имя-шлюза

Имя шлюза приложений.

- id

Один или несколько идентификаторов ресурсов (разделенных пробелами). Это должен быть полный идентификатор ресурса, содержащий всю информацию об аргументах «Идентификатор ресурса». Вы должны предоставить либо --ids, либо другие аргументы «Идентификатор ресурса».

- имя -n

Имя карты пути URL.

- не ждать

Не дожидайтесь завершения длительной операции.

- группа ресурсов -g

Имя группы ресурсов. Группу по умолчанию можно настроить с помощью az configure --defaults group = .

- подписка

Название или идентификатор подписки. Вы можете настроить подписку по умолчанию, используя az account set -s NAME_OR_ID .

Глобальные параметры

- отладка

Увеличьте подробность ведения журнала, чтобы отображались все журналы отладки.

--help -h

Показать это справочное сообщение и выйти.

- только показывать ошибки

Показывать только ошибки без предупреждения.

- выход -o

- запрос

- вербальный

Увеличить подробность ведения журнала. Используйте --debug для полных журналов отладки.

az список URL-адресов сетевого шлюза-шлюза

Список сопоставлений путей URL-адресов.

  az список URL-адресов сетевого шлюза-шлюза - имя-шлюза
                                                 --ресурс-группа
                                                 [--query-examples]
                                                 [--подписка]  

Примеры

Список сопоставлений путей URL-адресов.

  az список URL-адресов сетевого шлюза шлюза -g MyResourceGroup - имя-шлюза MyAppGateway  

Обязательные параметры

- имя-шлюза

Имя шлюза приложений.

- группа ресурсов -g

Имя группы ресурсов. Группу по умолчанию можно настроить с помощью az configure --defaults group = .

Дополнительные параметры

- примеры-запросов

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

- подписка

Название или идентификатор подписки. Вы можете настроить подписку по умолчанию, используя az account set -s NAME_OR_ID .

Глобальные параметры

- отладка

Увеличьте подробность ведения журнала, чтобы отображались все журналы отладки.

--help -h

Показать это справочное сообщение и выйти.

- только показывать ошибки

Показывать только ошибки без предупреждения.

- выход -o

- запрос

- вербальный

Увеличить подробность ведения журнала.Используйте --debug для полных журналов отладки.

az сетевое приложение-шлюз URL-путь-карта показать

Получите подробную информацию о карте URL-пути.

  az сетевое приложение-шлюз URL-путь-карта показать [--gateway-name]
                                                 [--ids]
                                                 [--имя]
                                                 [--query-examples]
                                                 [--resource-group]
                                                 [--подписка]  

Примеры

Получите подробную информацию о карте URL-пути.

  az network application-gateway url-path-map show -g MyResourceGroup --gateway-name MyAppGateway -n MyUrlPathMap  

Дополнительные параметры

- имя-шлюза

Имя шлюза приложений.

- id

Один или несколько идентификаторов ресурсов (разделенных пробелами). Это должен быть полный идентификатор ресурса, содержащий всю информацию об аргументах «Идентификатор ресурса». Вы должны предоставить либо --ids, либо другие аргументы «Идентификатор ресурса».

- имя -n

Имя карты пути URL.

- примеры-запросов

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

- группа ресурсов -g

Имя группы ресурсов. Группу по умолчанию можно настроить с помощью az configure --defaults group = .

- подписка

Название или идентификатор подписки. Вы можете настроить подписку по умолчанию, используя az account set -s NAME_OR_ID .

Глобальные параметры

- отладка

Увеличьте подробность ведения журнала, чтобы отображались все журналы отладки.

--help -h

Показать это справочное сообщение и выйти.

- только показывать ошибки

Показывать только ошибки без предупреждения.

- выход -o

- запрос

- вербальный

Увеличить подробность ведения журнала.Используйте --debug для полных журналов отладки.

az обновление карты URL-адресов сетевого шлюза приложения

Обновить карту путей URL.

  az обновление карты URL-адресов шлюза сетевого приложения [--add]
                                                   [--default-адрес-пул]
                                                   [--default-http-settings]
                                                   [--default-redirect-config]
                                                   [--default-rewrite-rule-set]
                                                   [--force-string]
                                                   [--gateway-name]
                                                   [--ids]
                                                   [--имя]
                                                   [--Нет, подождите]
                                                   [--Удалить]
                                                   [--resource-group]
                                                   [--установленный]
                                                   [--подписка]  

Примеры

Обновите карту путей URL, чтобы использовать новые настройки HTTP по умолчанию.

  az обновление карты URL-адресов шлюза сетевого приложения -g MyResourceGroup --gateway-name MyAppGateway \
    -n MyUrlPathMap --default-http-settings MyNewHttpSettings  

Обновить карту путей URL. (генерируется автоматически)

  az network application-gateway url-path-map update --default-address-pool MyAddressPool --default-http-settings MyNewHttpSettings --gateway-name MyAppGateway --name MyUrlPathMap --remove tags.no_80 --resource-group MyResourceGroup  

Дополнительные параметры

- добавить

Добавьте объект в список объектов, указав пары путь и значение ключа.Пример: --add property.listProperty <ключ = значение, строка или строка JSON>.

- пул адресов по умолчанию

Имя или идентификатор пула внутренних адресов по умолчанию.

- по умолчанию-http-настройки

Имя или идентификатор настроек HTTP по умолчанию.

--default-redirect-config

Имя или идентификатор конфигурации перенаправления по умолчанию.

- набор правил перезаписи по умолчанию

Имя или идентификатор набора правил перезаписи по умолчанию.

- силовая струна

При использовании 'set' или 'add' сохраняйте строковые литералы вместо попытки преобразования в JSON.

- имя-шлюза

Имя шлюза приложений.

- id

Один или несколько идентификаторов ресурсов (разделенных пробелами). Это должен быть полный идентификатор ресурса, содержащий всю информацию об аргументах «Идентификатор ресурса». Вы должны предоставить либо --ids, либо другие аргументы «Идентификатор ресурса».

- имя -n

Имя карты пути URL.

- не ждать

Не дожидайтесь завершения длительной операции.

- удалить

Удалить свойство или элемент из списка. Пример: --remove property.list ИЛИ --remove propertyToRemove.

- группа ресурсов -g

Имя группы ресурсов.

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

Ваш адрес email не будет опубликован.