Тим Бернерс-Ли объясняет, почему хорошие URI не меняются. Сами по себе URI не ломаются — их ломают люди. В теории владелец домена может сохранять адреса вечно, а на практике ссылки исчезают из-за редизайнов, переездов файлов и смены сотрудников. Всё это, по мнению автора, отговорки. Редизайн не мешает оставить старые URI рабочими. Переезд файлов решается настройкой сервера: нужно придумать абстрактное пространство URI и сопоставить его с реальной файловой системой, например через Apache. А ссылки на «cgi-bin» и «.pl» в адресе — это утечка внутренней кухни: смените механизм — и всё сломается. В пример он приводит URI Национального научного фонда с www.nsf.gov/cgi-bin/... — такой адрес долго не проживёт, в отличие от http://www.nsf.gov/pubs/1998/nsf9814/nsf9814.htm.
Ещё одна вредная идея — надеяться, что проблему решат URN. Но URN по структуре похожи на HTTP URI: там тоже есть идентификатор организации и дата. Если вы способны создать устойчивый URN, просто используйте его как HTTP URI. Для этого заведите базу данных, которая отображает постоянный идентификатор на текущий файл.
Дальше — про проектирование. Главный принцип: в URI должно быть меньше информации. Надёжный элемент — дата создания документа, поэтому хорошо начинать адрес с даты. Исключение — «последняя» страница вроде /money/moneydaily/latest/, но она не переживёт сам журнал. А вот что в URI включать нельзя: имя автора (авторство меняется), тему (классификации меняются), статус («old», «draft»), уровень доступа (документ может стать публичным), расширение файла (через 20 лет вы можете не использовать HTML), имя диска и следы софта. В W3C в URI оставляют только дату, как в http://www.w3.org/1998/12/01/chairs.
Осторожнее и с доменом. Отдельные поддомены вроде «secure» или «lists.w3.org» привязывают адрес к текущей структуре серверов. Менять их потом — убивать кучу ссылок. И подумайте о самом имени домена: захотите ли вы остаться «soap.com», когда смените продукт.
В конце Бернерс-Ли приводит «зал славы» плохих ссылок. Канал WHDH поменял адрес страницы с закрытиями школ с /stormforce/closings.shtml на /stormforce/ — хотя можно было оставить старый. А в Microsoft NetMeeting пункт меню «Free stuff» вел на мёртвый URL и отдавал 404. Вывод простой: URI могут и должны жить десятилетиями, если о их дизайне думать заранее.