5.3. Преобразование для схемы HTTP URI
Даже при широком развертывании систем URN сохранится значительное число URI, связанных с хостами. Следует обеспечить возможность разработки систем преобразования URI, способных независимо определять местоположение для таких URI.
Предположим, что имеется URI для весьма популярной программы, которую желательно опубликовать на многочисленных зеркалах по всему миру:
http://www.example.com/software/latest-beta.exe
Мы выделяем префикс "http" и ищем записи NAPTR для 'http.uri.arpa.'. Результат может иметь вид:
http.uri.arpa. IN NAPTR ;; order pref flags service regexp replacement 100 90 "" "" "!^http://([^/:]+)!1!i" .
Это выражение возвращает все символы, расположенные между двойной дробной чертой (//) и следующей дробной чертой или двоеточием. Для разграничения компонент выражения для замены используется восклицательный знак '!', поскольку в противном случае пришлось бы использовать escape-символы \ перед символами / и регулярное выражение для зоны имело бы вид:
"/^http:\\/\\/([^\\/:]+)/\\1/i"
Применим шаблон к URI для извлечения www.example.com и найдем для этого имени записи NAPTR:
www.example.com. ;; order pref flags service regexp replacement IN NAPTR 100 100 "s" "thttp+L2R" "" thttp.example.com. IN NAPTR 100 100 "s" "ftp+L2R" "" ftp.example.com.
Найдем записи SRV для thttp.example.com, которые будут содержать информацию о хостах, которые домен example.com указал в качестве зеркал. Клиентская программа может указать пользователю один из таких хостов.