solovyov.net

Короткие ссылки — rev=canonical

· · byteflow, django

Буквально вчера мне в читалку приехал пост Саймона Виллисона о довольно новом способе сокращать урлы.

Идея заключается в том, что сокращалки урлов на самом деле - не очень хорошая штука, особенно с точки зрения жизни этих ссылок (вопрос о том, нужно ли сокращать урлы - отдельная вещь). Что, если tinyurl.com умрет? Куча ссылок перестанет работать, даже если их цель все еще жива. В результате обсуждения родилась мысль, что можно же позволить сайтам самим указывать короткие урлы, с возможностью использования своих собственных сокращалок адресов.

Итого - сайт со спецификацией (если это можно так назвать), вкратце - надо указать в <head>...</head> документа подобный линк:

<link rev="canonical" href="здесь-короткий-урл">

И вот в посте Саймон рассказывает о том, как он реализовал это у себя - мне решение понравилось тем, что в базу ничего не сохраняется. ;) Однако то, что у него захардкожены модели - это не сильно клево, потому я сел и быстренько сделал небольшое джанго-приложение - revcanonical, которое только тем и занимается, что генерирует и редиректит такие ссылки.

Все урлы имеют вид двух строчек, объединенных точкой - это base62-кодированные1 номера типа (ContentType) и самого объекта в базе данных. Т.е. применять можно абсолютно для любого объекта без всякой настройки. Определение урла, как обычно - с помощью get_absolute_url(), ну да об этом написано и в README.

Само собой, оно уже встроено в Byteflow. ;-)