Васильев Андрей Михайлович, 2024
Версии презентации
Задачей первых HTTP-серверов стояла раздача файлов с файловой системы
Таким образом для идентификации документов в качестве основы были взяты пути к файлам на жёстком диске в рамках доминирующего ОС семейства UNIX
/Пример пути к файлу: /var/www/site/index.html
Внешнему наблюдателю не надо показывать все файлы на файловой системе, а только
файлы в определённом каталоге, например в каталоге /var/www/site
Т.е. запрос документа по пути /index.html должен приводить к отдаче документа
с файловой системы /var/www/site/index.html
Для указания местоположения целевого документа в сети Интернет используется Uniform Resource Identifier, URI
[ схема ":" ] [ // источник ] путь [ "?" запрос ] [ "#" фрагмент ]Блоки внутри [ ] являются опциональными и могут быть опущены
http, ftp, file и т.д.Рассмотрим веб-сервер web-app.net, раздающий документы из файловой системы
Структура ФС:
/var/www/site
├── 404.html
├── assets
│ └── main.css.map
├── feed.xml
├── index.html
├── labs
│ ├── 001-lab-01.html
│ └── 002-lab-02.html
├── labs.html
├── reference
│ ├── books.html
│ ├── editors.html
│ ├── schedule.html
│ └── tasks.html
└── topics.htmlhttp/var/www/siteДля файла /var/www/site/index.html URI будет
http://web-app.net/index.htmlДля файла /var/www/site/reference/tasks.html
http://web-app.net/reference/tasks.htmlВ рамках протокола HTTP иерархия соответствует файловой системе с разделителем /
Для указания пути к локальным файлам существует собственная схема — file
file://host/pathfile://localhost/C:\my-site\information.htmlfile://localhost/C:/my-site/information.htmlfile:///C:/my-site/information.html/var/www/my-site/index.htmlfile://localhost/var/ww/my-site/index.htmlfile:///var/www/my-site/index.htmlКлючевая особенность гипертекста — формировать ссылки между документами в сети, связывая их в единую сеть
В рамках последней схемы удобно использовать частичные URI
URI документа = абсолютный URI текущего документа + частичный URIЧастичные URI могут быть относительными или абсолютными
Отличить абсолютный путь от относительного легко — он начинается с символа /
/
├── css
│ └── style.css
├── index.html
└── topic
├── list.html
├── topic-1.html
└── topic-2.htmlindex.html:
/index.htmlstyle.css:
/css/style.cssОни будут одинаковыми для любого просматриваемого документа на сайте
При формировании относительных частичных путей используется каталог, в котором находится документ с ссылкой
/index.html таким каталогом каталогом является //topic/topic-2.html — /topicПри формировании ссылки к документу внутри одного сайта удобно использовать абсолютный путь для общих документов: файлы стилей, исполняемые JS/WS-модули
Рассмотрим структуру сайта example-app.net
/
├── css
│ └── style.css
├── index.html
└── topic
├── list.html
├── topic-1.html
└── topic-2.htmlВ рамках сайта у каждого файла будет свой собственный абсолютные частичные URL:
style.css: /style.cssindex.html: /index.htmllist.html: /topic/list.htmltopic-1.html: /topic/topic-1.htmltopic-2.html: /topic/topic-2.htmlС точки зрения оптимизации поисковых алгоритмов однажды опубликованный документ в сети Интернет не должен изменять своего пути
Построим относительный путь от файла /index.html
/
├── css
│ └── style.css
├── index.html
└── topic
├── list.html
├── topic-1.html
└── topic-2.htmlhttp://example-app.net/index.htmlcss/style.css/css/style.css: /css/style.csshttp://example-app.net:
http://example-app.net/css/style.cssРассмотрим построение пути от файла topic-1.html к файлу /css/style.css
/
├── css
│ └── style.css
├── index.html
└── topic
├── list.html
├── topic-1.html
└── topic-2.htmlДля обращения к родительскому каталогу следует использовать специальное название каталога — ..
Этот специальный каталог присутствует и в обычной файловой системе и может быть использован не только в
http://example-app.net/topic/topic-1.html../css/style.css/topic/../css/style.css:
/topic/../css/style.css/css/style.csshttp://example-app.net: http://example-app.net/css/style.cssВыделили следующие типы URI:
Возможно использовать только полный URI
Удобно использовать частичный URI, так как:
К плюсам использования относительного частичного URI относят:
http), так и через уровень файловой системы (схема file)Ограничения относительных частичных URI: