Ausgefallen gut ins Netz!

Hinter dem Namen Wicked Software stehen ausgefallen gute und begeisterte Entwickler, für die Software wesentlich mehr ist als funktionierender Code. Wicked Software hat sich auf Joomla! spezialisiert und bietet moderne und flexible Erweiterungen.

Wir schreiben in unseren Blog mit und über Joomla!, unsere Software, Tricks & Tipps und alles was uns in den Sinn kommt und uns nützlich erscheint.

  • Administrator
  • 404 Weiterleitungen
  • Kurz-URL-Dienst
Ein rotes Band wird mit einer Schere durchgeschnitten

Grundlagenforschung

Die erste Frage lautet: was sind Kurz-URLs und wie funktionieren sie?
Die Idee ist ganz einfach: Eine lange, unübersichtliche URL ist sehr unhandlich wenn man sie weitergeben, speichern oder merken will. Nun gibt es im Internet diverse Dienstleister, die Kurz-URLs anbieten. Die lange URL wird in ein Formularfeld eingegeben, der Dienstleister gibt eine kurze URL (unter dessen Domain) zurück.
Diese Kurz-URL ist im Regelfall einfach eine Weiterleitung auf die lange URL.

Mittlerweile gibt es aber auch viele weitere Funktionen wie z.B. Statistiken (wie oft wurde die Kurz-URL aufgerufen) oder sogar zwischengeschaltete Werbung. In diesem Beitrag werden wir unseren eigenen Kurz-URL-Dienst in unserer Joomla!-Installation basteln und zwar mit Core-Mitteln, das bedeutet ohne fremde Erweiterungen.

Die Umleitungskomponente

Joomla! bietet seit einigen Versionen die sogenannte "Umleitungen"-Komponente an. Diese kommt (mithilfe eines Plugins) immer zum Tragen, wenn eine Seite aufgerufen wird, die nicht existiert und Joomla! z.B. eine 404 Fehlermeldung wirft. Hier hat der Administrator nun die Möglichkeit, im Backend eine alternative URL anzugeben, auf die im Fehlerfall weitergeleitet wird.

Wichtig: Es gibt zwei Sachen zu beachten, damit die Umleitungen funktionieren:
  1. Das "System - Umleitung"-Plugin muss aktiviert sein (also falls noch nicht geschehen, direkt jetzt tun)
  2. Die Umleitungen funktionieren nur, wenn Joomla! einen Fehler wirft, existiert die Seite, passiert keine Umleitung, selbst wenn eine definiert wurde.

Unsere erste Kurz-URL in Joomla!

Nun werden wir die erste Kurz-URL einrichten. Der normale Weg ist, in die Umleitungen-Komponente zu gehen, auf "Neu" zu drücken und in dem Formular bei "Alte Adresse" die Kurz-URL anzugeben und bei "Neue Adresse" die Weiterleitung. Danach das Aktivieren nicht vergessen!

Wir legen eine erste Kurz-URL an

Wir wählen in diesem Beispiel also als Kurz-URL https://www.example.com/a und wollen diese dann auf https://www.example.com/meine-sehr-lange-url.html weiterleiten. example.com ist dann natürlich die eigene Domain und die URL https://www.example.com/a darf in Joomla! nicht als valide Seite existieren.

Gut zu wissen: Das Joomla! "System-Umleitung"-Plugin speichert alle 404 Fehler in der Umleitungen-Komponente ab. Das heißt, man kann einfach im Frontend einmal diesen 404 generieren und hat somit die URL direkt im Backend zum Umleiten verfügbar. Das spart Tipparbeit.

Weitere Verbesserungen

Die erste Kurz-URL ist angelegt und sollte funktionieren. Im Prinzip können nun vogelwild weitere Kurz-URL in Joomla! angelegt werden. Aber hier kommen wir schon direkt an die erste Grenze: wie oben zweimal erwähnt, können nur nicht existierende Seiten als Kurz-URL in Joomla! angelegt werden. Das bedeutet, wenn wir einen Menüpunkt https://www.example.com/hallo haben, kann darauf keine Weiterleitung eingerichtet werden. Lösungen?

Präfix nutzen

Es würde sich anbieten, dass man einen eigene "Kontext" schafft. Das bedeutet, man "opfert" zwei Zeichen und baut sich die Kurz-URL in einem Untersegment. Dies könnte z.B. so aussehen: https://www.example.com/a/hallo. Solange es keinen Menüpunkt (oder mit neuem Router Alias) mit dem Namen "a" gibt, kann jede Kurz-URL mit dem Präfix "a" erstellt werden.

Zweite Domain registrieren

Eine weitere Optimierung könnte das Registrieren einer weiteren Domain sein. Gerne werden hierzu Domains aus exotischen Länder genutzt, die noch freie Plätze im zwei- oder dreistelligen Domainnamen haben (z.B. abc.tld) Das spart nochmals einiges an Zeichenanzahl.

Zusätzlich gibt es drei nette "Features" in Joomla!: zum einen kann man beliebig viele Domains auf eine Joomla!-Installation zeigen lassen und Joomla! funktioniert mit allen gleich. Zum anderen kann man auch absolute "Kurz-URL" in der Weiterleitungen-Komponente angeben ("absolut" bedeutet mit Domain). Dann wird die Weiterleitung nur angeworfen, wenn man über diese Domain den 404 generiert und last but not least kann man bei der "Neuen Adresse" jede beliebige interne oder externe Domain angeben. Das heißt, man kann von Domain A auf Domain B leiten.

Also nehmen wir mal an, wir haben zwei Domains: https://abc.tld und https://www.regulaere-domain.tld. Nun können wir folgendes anlegen:

Eine Kurz-URL anlegen mit absoluter Domain

Ruft nun jemand https://abc.tld/a auf, wird er auf https://www.regulaere-domain.tld/meine-sehr-lange-url.html geleitet. Wir haben somit den perfekten Kurz-URL-Dienst mit Joomla!-Boardmitteln umgesetzt.

Perfekt?

Nun noch ein Programmierer-Gedanke: Wir haben trotz zwei Domain und dem Präfix immer diese kleine Krücke, dass wir keine Kurz-URL nutzen können, die als reguläre Joomla!-Seite existiert. Hier wäre es doch schön, wenn es dafür auch eine Lösung gäbe...die gute Nachricht ist: die gibt es!

Voraussetzung sind wieder zwei Domains: einmal die reguläre Seitendomain und einmal unsere "Kurz-URL-Domain", die nur für Kurz-URLs genutzt werden soll. Wir erinnern uns von vorhin: nur Fehlerseiten können weitergeleitet werden. Nunja, nichts einfacher als das. Lasst uns doch einfach alle Aufrufe dieser Kurz-URL-Domain in eine Fehlerseite laufen und somit alle Aufrufe weiterleitbar machen.

Dazu gehen wir in die index.php unseres Templates und fügen weit oben folgenden Code ein:

// Laden des Uri-Namespaces
use Joomla\CMS\Uri\Uri;

// Überprüfen, ob der Aufruf über unsere Kurz-URL-Domain kommt
if (Uri::getInstance()->getHost() == 'abc.tld') :
  // 404 verursachen
  throw new Exception('Nope', 404);
endif;

Tadaa, kombiniert mit der Eigenschaft, absolute URLs zu verwenden und auf interne und externe Domains weiterleiten zu können, haben wir unseren eigenen Kurz-URL-Dienst mit Joomla! erschaffen. Und wer noch eine Statistik benötigt, der kann z.B. die Banner-Komponente dazwischen schalten. Wie das genau geht, kommt vielleicht in einem anderen Beitrag.