solovyov.net

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

in byteflow, django by Alexander Solovyov

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

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

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

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

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

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

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


  1. Цифры, большие и маленькие латинские буквы 

Все замечания и вопросы можно отправлять письмами на