Лаборатория поисковой оптимизации

Общий синтаксис


 <  Универсальные идентификаторы ресурсов (URI)  Содержание  HTTP URL  > 

URI в HTTP может быть представлен в абсолютной или относительной форме по отношению к некоторому известному базовому URI, в зависимости от контекста его использования. Эти две формы отличаются тем, что абсолютный URI всегда начинается с имени схемы, за которым следует двоеточие (например HTTP: или FTP:).

URI

= ( absoluteURI | relativeURI ) [ "#" фрагмент ]

AbsoluteURI

= схема ":" *( uchar | reserved )

RelativeURI

= net_path | abs_path | rel_path

net_path

= "//" net_loc [ abs_path ]

abs_path

= "/" rel_path

rel_path

= [ проход ] [ ";" params ] [ "?" query ]

path

= fsegment *( "/" сегмент )

fsegment

= 1*pchar

segment

= *pchar

params

= param *( ";" param )

param

= *( pchar | "/" )

scheme

= 1*( ALPHA | DIGIT | "+" | "-" | "." )

net_loc

= *( pchar | ";" | "?" )

query

= *( uchar | reserved )

fragment

= *( uchar | reserved )

pchar

= uchar | ":" | "@" | "&" | "=" | "+"

uchar

= unreserved | escape

unreserved

= ALPHA | DIGIT | safe | extra | national

escape

= "%" HEX HEX

reserved

= ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+"

extra

= "!" | "*" | "'" | "(" | ")" | ","

safe

= "$" | "-" | "_" | "."

unsafe

= CTL | SP | <"> | "#" | "%" | "<" | ">"

national

= <любой OCTET, исключая ALPHA, DIGIT, зарезервированный, extra, safe, и unsafe>

Более детальную информацию о синтаксисе и семантике URL можно найти в RFC-1738 [4] и RFC-1808 [11]. Приведенные выше BNF включают в себя национальные символы, недопустимые в URL, так как это специфицировано в RFC 1738, так как серверам HTTP не запрещено использование любых наборов символов, допустимых в rel_path частях адресов, HTTP-прокси могут получить запросы URI, не определенные в рамках RFC-1738.

Протокол HTTP не устанавливает каких-либо ограничений на длину URI. Серверы должны быть способны обрабатывать URI любых ресурсов, имеющих любую длину. Сервер должен выдать отклик 414 (Request-URI Too Long - URI запроса слишком длинен), если URI длиннее, чем может обработать сервер (см. раздел 9.4.15).

Замечание: Серверы должны избегать использования URI длиннее 255 байт, так как некоторые старые клиенты или прокси-приложения не могут корректно работать с такими длинами.



RFC 2068