Как разрешить канонические URL-адреса ссылок на веб-страницы

Справочная информация:

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

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

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

Мой вопрос:

Как веб-браузер узнает, какой URL запрашивать, когда пользователь щелкает ссылку на веб-странице? Или как мой поисковый робот узнает, какую веб-страницу загружать, когда найдет ссылку на веб-странице?

Любые подсказки о доступных библиотеках Groovy для разрешения URL-адресов также будут оценены.


person Dušan Rychnovský    schedule 05.08.2012    source источник


Ответы (2)


Браузеры разрешают относительные URL-адреса (включая URL-адреса, относящиеся к корневому каталогу сервера, например, /fruit/orange.html) в соответствии со спецификациями URL-адресов, см. Интернет-стандарт STD 66, который в настоящее время является RFC 3986. Помимо общих соображений, они должны учитывать теги <base href=...>, если они есть.

Это не имеет ничего общего с файловой системой. Если URL-адрес сопоставляется с файлом на сервере, это происходит внутри сервера.

Канонические URL-адреса — это нечто другое. Используя элемент link с rel=canonical, страница может указать свой канонический URL-адрес, который следует использовать, например, в поисковых системах. См., например. http://googlewebmastercentral.blogspot.fi/2009/02/specify-your-canonical.html

person Jukka K. Korpela    schedule 05.08.2012
comment
Спасибо за Ваш ответ. Означает ли это, что для реализации моего поискового робота мне нужно будет изучить соответствующий RFC и соответствующим образом реализовать алгоритм? Знаете ли вы какие-либо существующие библиотеки, которые я мог бы использовать (в моем проекте Groovy) для решения этой проблемы? - person Dušan Rychnovský; 05.08.2012

Класс java.net.URI, доступный в стандартной библиотеке, предоставляет средства для разрешения относительных ссылок с помощью метода URI#resolve(String).

См. документация по javadoc.

person Dušan Rychnovský    schedule 15.08.2012