Niemand mag lange URLs. Zumindest dann nicht, wenn Sie eingegeben werden müssen. Dies ist einer der Gründe für die Beliebtheit von QR-Codes und Diensten zum Kürzen von URLs. Das Thema QR-Codes habe ich bereits hier und hier behandelt, deshalb möchte ich dieses Mal etwas zum Thema “URL-Shortening” schreiben. Die Welt ist in dieser Beziehung nämlich nicht so rosarot und voller Einhörner, wie gemeinhin angenommen. Es trampeln durchaus auch einige missmutige graue Rhinos durch die Gegend, die einen anrempeln. 😏
Zusätzlich möchte ich im Rahmen einer kleinen, unregelmäßigen Reihe zum Thema “Digitale Teilhabe” wieder darauf hinweisen, wie wichtig das Motto “own your stuff” für eine digitale Mündigkeit ist. Dazu gibt es noch ein Tutorial, wie sich ein URL-Kürzer mit minimalsten Mitteln bauen lässt.
Das ist der erste Teil einer dreiteiligen Reihe zum Thema “Kurzlinks selbst bauen”.
- Den ersten Teil lesen Sie gerade.
- Der zweite Teil ist hier zu finden.
- Der dritte Teil ist hier zu finden.
Blick unter die Motorhaube
URLs kürzen?
Für alle, die sich noch gar nicht mit dem Thema beschäftigt haben, hier eine Einführung in drei Sätzen. Alle anderen können beruhigt beim nächsten Abschnitt weiterlesen.
Ein Kurz-URL Dienst (engl. URL shortening service) dienst dazu, eine lange URL wie https://www.arminhanisch.de/2018/11/byod-or-not-to-byod/
unter einer Art Alias z.B. als https://jmp.to/shorty
verfügbar zu machen. Damit lässt sich diese kurze URL wesentlich leichter eingeben bzw. nutzt bei sozialen Medien weniger Platz.
Was passiert da eigentlich?
Unabhängig davon, wie solche Kurz-URLs entstehen, der Mechanismus ihrer Nutzung ist immer der Gleiche: beim Aufruf der gekürzten URL erfolgt eine Weiterleitung auf die ursprüngliche Adresse. So einfach, so gut. Aber was bedeutet dieser Satz?
Wenn wir einige (OK, eine ganze Menge) technische Details außer Acht lassen, dann passiert Folgendes: wenn Sie in Ihrem Browser eine Internetadresse (eine URL) eingeben, fordert der Browser das Dokument beim genannten Server an. Dazu dient HTTP, das HyperText Transfer Protocol. Dazu zerlegt der Browser die URL erst einmal in die einzelnen Bestandteile. Aus https://jmp.to/shorty
wird:
https
– die Angabe des Protokolls hier (https
)jmp.to
– der Zielrechner der Anfrage/shorty
– der Pfad zum Dokument auf dem Server
Der Browser stellt also eine Verbindung zum Rechner mit dem Hostnamen jmp.to
her und fordert dann dort das in der URL enthaltene Dokument an. Netterweise ist HTTP/HTTPS ein textbasiertes Protokoll, so dass wir relativ einfach “mitlesen” können.
GET /shorty HTTP/1.1
Das erste Wort (engl. verb) ist das HTTP-Kommando (prinzipiell gibt es welche zum Lesen, Aktualisieren, Erzeugen und Löschen von Dokumenten)
Auf jede HTTP(S)-Anfrage antwortet der Webserver mit einem Statuscode (und weiteren Informationen), damit der HTTP(S)-Client (hier der Browser) weiß, wie weiter zu verfahren ist. Diese Statuscodes sind in Nummernbereiche aufgeteilt:
- 1xx – Informationen ("das interessiert eh wieder niemand")
- 2xx – Erfolgreiche Operation ("passt")
- 3xx – Umleitung ("da geht’s lang")
- 4xx – Client-Fehler ("Du hast’s verbockt")
- 5xx – Server-Fehler ("Ich hab’s verbockt")
- 9xx – Proprietäre Fehler ("Ich will aber eine eigene Meldung")
Eine vollständige Liste finden Sie in der Wikipedia. Geht alles gut, erhält der Browser einen 200er-Code zurück (meist 200 oder 204). Im Falle unserer Kurz-URL bekommt der Browser jedoch folgende Antwort:
HTTP/1.1 307 Temporary Redirect
Content-Type: text/html; charset=utf-8
Location: https://www.arminhanisch.de/2018/11/byod-or-not-to-byod/
Date: Sun, 02 Dec 2018 21:21:52 GMT
Content-Length: 92
<a href="https://www.arminhanisch.de/2018/11/byod-or-not-to-byod/">Temporary Redirect</a>.
Darauf der Browser: “Oh, ein 307! Dann geh ich und hol das Dokument, das in Location:
steht”. Ihr Browser folgt dann automatisch dem Redirect und lädt das in der Headerzeile Location:
angegebene Dokument. Und schon landen Sie ganz bequem bei der langen Zieladresse, ohne diese eingeben zu müssen.
Wieso jetzt 307 und nicht 301?
Kleiner Exkurs für Interessierte: warum 307
? 301
würde ja auch reichen. Wichtigster Unterschied: es gibt permanente Umleitungen und temporäre Umleitungen. Bei einer 301
ist das ein permanenter Redirect, also ein “vergiss diese URL (die kurze), nur das Umleitungsziel (die lange) ist gültig”.
Da wir aber die kurze Version ebenfalls behalten wollen (sonst wäre das ganze Projekt “URL-Kürzung” ja sinnlos 😄), benutzen wir einen temporären redirect. Wenn Sie der Unterschied zwischen 302
und 307
interessiert, sind Sie für diesen Post sowieso überqualifiziert (suchen Sie im Web einfach nach “http 302 307 difference”)
Do it yourself
Es gibt mittlerweile Dutzende Dienste, die eine Kurz-URL anbieten, vom “Ur-Vater” TinyURL über bit.ly oder t1p.de bis zu eigenen Diensten von sozialen Medien wie t.co von Twitter. Warum soll ich mich dann mit dem Thema beschäftigen? Gibt’s doch kostenlos und dann verteile ich halt diese Links …
Nachteile von externen Kurz-URL-Diensten
Lebensdauer
Viele Anbieter solcher kostenlosen Dienste werben mit “unbegrenzter” Lebensdauer der so erzeugten Links. Das klingt solange gut, bis “unbegrenzt” dann bedeutet “solange wir nicht aus irgendeinem Grund den Betrieb einstellen”. Ganze Linksammlungen sind so schon aus dem Web verschwunden.
Missbrauch / Blocking
Eine ganze Reihe von Anbietern von gekürzten URLs musste bereits aufgeben, weil der Dienst durch Spammer missbraucht wurde. Nicht nur Sie nutzen einen solchen Dienst, sondern das ganze Web. Stellt sich heraus, dass ein Großteil des Traffics von der entsprechenden Domain Spam ist oder auf Malware verweist oder gegen die Domainregistrierungs-Richtlinien der jeweiligen Top-Level-Domain verstößt, dann wird diese Domain vom Netz genommen. Ihre Links sind dann weg oder mit Roy Batty gesprochen “All diese Momente werden verloren sein in der Zeit, so wie Tränen im Regen” (ja, ich bin Blade Runner Fan 😏).
Datenschutz
Neben der Tatsache, dass ein solche Linkdienst eben auch erfährt, welche URLs von welchen IP-Adressen aufgerufen werden (die wenigsten bieten einen De-Referrer), gibt es noch weitere Nachteile hinsichtlich Datenschutz. Wird ein Kurzlink-Dienst gehackt, können die Ziel-URLs geändert werden, beispielsweise auf Phishing-Seiten oder Seiten mit Scripting-Angriffen oder Malware. Verhindern lässt sich dies beispielsweise dadurch, dass es möglich ist, zu einem Kurzlink erst einmal das Ziel anzuzeigen und nicht sofort direkt aufzurufen. Bei vielen Diensten ist dies aber eine kostenpflichtige Zusatzfunktion.
Bezahlte Features
Weniger ein Nachteil als ein Denkanstoß: wenn Sie für einen Premium-Zugang zu einem Kurz-URL-Dienst Geld bezahlen, um beispielsweise eine Anzeige des Linkziels oder die Erzeugung von QR-Codes zu erhalten, dann können Sie auch für einen virtuellen Server bezahlen, der Ihre eigene Domain hostet und dort selbst einen Kurzlink-Dienst einrichten, den nur Sie benutzen dürfen. Wenn Sie schon Geld ausgeben, sollten Sie auch das Sagen haben. 😄
Ist Selbstbauen nicht kompliziert?
Nein. Zumindest die Grundfunktionalität ist sehr einfach zu haben. Komfortfunktionen wie Zielanzeige oder QR-Codes sind aber auch keine rocket science – mehr dazu weiter unten. Alles, was Sie brauchen sind folgende Dinge:
- eine kurze Domain
wenn Sie nurwww.mistersmith.hostinganbieter.de
als Domain haben, macht das irgendwie keinen Sinn 😄 (ja, es gibt noch gut merkbare kurze Domains, zur Zeit der Entstehung dieses Artikel warabc.xyz
noch frei!) - einen eigenen Webauftritt (die Beispiele unten sind für Auftritte, welche die Webserver Apache oder nginx nutzen – das sind ca. 99% aller Server)
- den Mut, eine Konfigurationsdatei auf diesem Webauftritt zu ändern 😏 – das sorgt für Verständnis im Umgang mit den Werkzeugen des digitalen Auftritts. Sie wollen doch nicht immer wegen jeder Kleinigkeit jemanden fragen müssen, oder?
Rewrites – ein mächtiges Werkzeug
Das Geheimnis hinter dieser Funktionalität nennt sich “rewrite engine”. Das ist nichts geheimnisvolles, sondern die Funktion eines Webserver, eine ankommende Anfrage nach einer bestimmen URL in Echtzeit “umzuschreiben”. Eine URL A
wird dann in eine URL B
umgeschrieben. Das kann ein Ersetzen eines Teil der URL sein, das Anbauen von Präfix oder Suffix oder die Weiterleitung zu einer komplett anderen Seite.
Genau an dieser Stelle setzen wir an. Wir leiten (über die oben erwähnten Statuscodes) eine ankommende Anfrage mit einer kurzen URL auf eine lange URL weiter. Als Beispiel nutzen wir die URL mit dem Pfad /shorty
. Nehmen wir an, Sie haben die Domain rdr.to
ergattert (als schöne Abkürzung für redirect to) und Sie wollen http://rdr.to/shorty
umleiten auf die lange URL https://www.arminhanisch.de/2018/11/byod-or-not-to-byod/
(jaja, schamlose Eigenwerbung 😄). Hier unterscheiden sich, wie oben bereits erwähnt, die Schritte abhängig davon, ob Sie den Apache oder den nginx nutzen.
Ihr Webauftritt nutzt Apache
Dazu muss für den Apache das Modul mod_rewrite
aktiviert sein (ich kenne keinen Hoster, bei dem das nicht der Fall wäre, aber fragen Sie sicherheitshalber nach). Dann tragen Sie in die Datei .htaccess
(im Hauptordner ihrer kurzen Domain) folgende Zeile ein:
REDIRECT 307 /shorty https://www.arminhanisch.de/2018/11/byod-or-not-to-byod/
Das muss alles in einer Zeile stehen! Wollen Sie weitere Weiterleitungen, kommen einfach neue Zeilen unten drunter. Ins Deutsche übersetzt bedeutet dies:
- Leite auf eine andere Seite
- mit dem Code
307
um - wenn die Anfrage nach
/shorty
kommt - auf das Ziel
https://www.arminhanisch.de/2018/11/byod-or-not-to-byod/
Ihr Webauftritt nutzt ngingx
Tragen Sie in Ihre nginx
-Konfigurationsdatei (wo Sie diese finden, sagt Ihnen Ihr Hosting-Provider) die folgende Zeile ein:
rewrite ^/shorty$ https://www.arminhanisch.de/2018/11/byod-or-not-to-byod/ redirect;
Das muss alles in einer Zeile stehen! Wollen Sie weitere Weiterleitungen, kommen einfach neue Zeilen unten drunter. Ins Deutsche übersetzt bedeutet dies:
- URL umschreiben und zwar
- die Anfrage nach
^
(Beginn Pfad)/shorty
,$
(Ende Pfad) - auf das Ziel
https://www.arminhanisch.de/2018/11/byod-or-not-to-byod/
- als Umleitung umschreiben
Ich habe aber mehrere URLs und welche Kurz-URL und und und …
Schon klar. An dieser Stelle ein kleiner Hinweis an all die Profis, die bereits vor dem Monitor auf- und ab laufen: ja, das bedeutet, dass jede neue Kurz-URL hier in die Datei eingetragen werden muss. Ja, damit gibt es noch keine Zielanzeige und keinen QR-Code. Das ist an dieser Stelle auch noch gar nicht das Ziel. Es geht darum, einen Einsteig mit der niedrigstmöglichen Schwelle zu bekommen und kurze URLs nutzen zu können.
So, nachdem wir das auch der Welt haben, einige Erklärungen für Sie, die Sie bis hierhin mit großer Geduld durchgehalten haben:
Welche Kurz-URL nehme ich?
Mit diesem Ansatz sind Sie hier völlig frei. Üblicherweise sehen die Kurz-URLs aus wie z.B. Yz4fG4
, bei einigen Diensten können Sie aber auch eigene Kürzel wie Messe2018
erstellen. Was Sie bei dem obigen Ansatz als Kurz-URL eintragen, ist egal, solange es eindeutig ist. Um kurz zu bleiben, können Sie ja beispielsweise bei aaa
anfangen und über aab
, aac
bis zzz
hochzählen (das sind über 24000 Adressen).
Mehrere URLs eintragen
Sie tragen einfach mehrere Zeilen untereinander ein. Natürlich können die kommerziellen Dienste Millionen von URLs verwalten über eine schöne Web-Oberfläche, aber das ist ein Punkt für eine weitere Folge aus dieser Postreihe. Seien wir ehrlich. Sie werden nicht für alle Ihre Posts eine Kurz-URL benötigen und die paar Dutzend lassen sich durchaus mit dieser Methode verwalten, wenn dafür keine Kosten anfallen, Sie nicht auf externe Dienste angewiesen sind und Sie einen Texteditor bedienen können. Dann haben Sie alle Kurz-URLs an einer Stelle und können sozusagen auch eine gesamte “Abkürzungsliste” weitergeben. 😄
Wie geht’s weiter?
In den nächsten Folgen dieser kleinen Reihe werde ich ausgehend von dieser Minimal-Funktionalität sinnvolle Funktionen ergänzen und besprechen und dann zeigen, wie sich ein eigener kleiner Abkürzungs-Dienst als Code entwickeln lässt. Auch wenn Sie nicht programmieren können, lohnt es sich, später mal bei meinem Blog vorbei zu kommen. Denn das fertige Produkt wird natürlich open source und wenn Sie für Ihren Webauftritt (nicht vergessen, kurze Domain besorgen!) ein Fast-CGI Script installieren können, dann bekommen Sie Ihren eigenen, privaten Kurz-URL-Dienst.
Letztlich geht es – egal ob Sie nur die Weiterleitung oben oder Komfortfunktionen benötigen – immer um eine digitale Souveränität und Mündigkeit. Sie sollten wissen, wie Dinge im Prinzip funktionieren und die Daten und die Funktion sollte Ihnen gehören. Denn nur mit “own your stuff” sind Sie wirklich in der Lage, die Lebenszeit Ihrer kurzen Links zu bestimmen und hängen nicht an Spam-Quote eines fremdem Anbieters, den es in zwei Jahren vielleicht nicht mehr gibt.