solovyov.net

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

2 min read · byteflow, django

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

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

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

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

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

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

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


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

If you like what you read — subscribe to my Twitter, I always post links to new posts there. Or, in case you're an old school person longing for an ancient technology, put a link to my RSS feed in your feed reader (it's actually Atom feed, but who cares).

Other recent posts

Server-Sent Events, but with POST
ngrok for the wicked, or expose your ports comfortably
PostgreSQL collation
History Snapshotting in TwinSpark
Code streaming: hundred ounces of nuances