Буквально вчера мне в читалку приехал пост Саймона Виллисона о довольно новом способе сокращать урлы.
Идея заключается в том, что сокращалки урлов на самом деле - не очень хорошая штука, особенно с точки зрения жизни этих ссылок (вопрос о том, нужно ли сокращать урлы - отдельная вещь). Что, если tinyurl.com умрет? Куча ссылок перестанет работать, даже если их цель все еще жива. В результате обсуждения родилась мысль, что можно же позволить сайтам самим указывать короткие урлы, с возможностью использования своих собственных сокращалок адресов.
Итого - сайт со спецификацией (если это можно так назвать), вкратце - надо
указать в <head>...</head>
документа подобный линк:
<link rev="canonical" href="здесь-короткий-урл">
И вот в посте Саймон рассказывает о том, как он реализовал это у себя - мне решение понравилось тем, что в базу ничего не сохраняется. ;) Однако то, что у него захардкожены модели - это не сильно клево, потому я сел и быстренько сделал небольшое джанго-приложение - revcanonical, которое только тем и занимается, что генерирует и редиректит такие ссылки.
Все урлы имеют вид двух строчек, объединенных точкой - это
base62-кодированные1 номера типа (ContentType
) и самого объекта в базе
данных. Т.е. применять можно абсолютно для любого объекта без всякой
настройки. Определение урла, как обычно - с помощью get_absolute_url()
, ну да
об этом написано и в README.
Само собой, оно уже встроено в Byteflow. ;-)
-
Цифры, большие и маленькие латинские буквы ↩︎