Eigener URL-Shortener: Yourls

Links zu Webseiten, insbesondere zu Blogeinträgen, sind oft sehr lang. Daher gibt es die sogenannten URL-Shortener. (Tja, wie nennt man die auf Deutsch? URL-Abkürzer? Linkkürzer? Linkabkürzungsdienste?)
Statt https://www.benutzerfreun.de/konzeption/eigener-url-shortener-yourl/ kann man dann z. B. den Link http://bit.ly/fYBVE weitergeben. Bei E-Mails bewahrt das vor nicht klickbaren Links durch Zeilenumbrüche. Vor allem spart man so Zeichen bei Kurznachrichten-Diensten wie Twitter – da hat man ja nur 140 Zeichen, und wenn davon 60 für einen Link draufgehen, kann man dazu nicht mehr viel schreiben.

Technisch ist das ganz einfach: Der Kurzlinkdienst hat eine Datenbank, in die die lange URL eingetragen wird. Dazu erzeugt er eine kurze URL, die der Nutzer per E-Mail oder Twitter verbreitet. Ruft man diese Kurz-URL auf, sucht der Kurzlinkdienst in seiner Datenbank die dazugehörige lange URL und leitet den Benutzer dorthin.

Ein weiterer Vorteil: Als Linktippgeber kann ich sehen, wie oft meine Empfehlung angeklickt wird. Dazu muss ich mich allerdings bei dem Linkkürzer anmelden.

Screenshot persönliche Seite bei bit.ly mit Klickstatistik
Screenshot persönliche Seite bei bit.ly

Noch komfortabler ist es, einen eigenen URL-Shortener einzurichten. Jedenfalls dann, wenn man das Einrichten hinter sich hat. Damit bin ich unabhängig und meine Kurz-URLs funktionieren, solange mein Server funktioniert. Vor einigen Wochen gab es große Aufregung, weil einer der Linkkürzer abgeschaltet werden sollte – alle seine Kurzlinks wären damit unbrauchbar geworden.

Eigenen Dienst für Kurzlinks einrichten

Wie diese Einrichtung eines eigenen Kurzlink-Dienstes mit Hilfe der open-source Software Yourls geht, beschreibe ich im Folgenden:

Die Domain

Damit die URLs wirklich kurz werden, sollte Ihre eigene Domain kurz sein. Oder Sie besorgen sich eine eigene nur für diesen Zweck. Ich habe mich für http://bnfr.de entschieden.

Die Installation von Yourls

Bei Yourls laden Sie sich die benötigten Dateien herunter. Folgen Sie der Installationsanleitung.

Wichtig: Kopieren Sie die Dateien in ein eigenes Verzeichnis, am besten einfach nach www.IhreDoman.de/yourls/. Insbesondere wenn Sie ein Blogsystem wie WordPress nutzen, gibt es sonst Ärger: Denn Blog und Yourls haben unterschiedliche Vorstellungen davon, was mit Seitenaufrufen passieren soll. (Beide verändern die .htaccess, in der Umleitungen definiert werden können. Und die Änderungen der beiden Systeme vertragen sich nicht.)

Die Datenbank

Für die Liste mit den Zuordnungen der Kurzlinks zu den langen URLs brauchen Sie eine mySQL-Datenbank. Das kann eine bestehende sein, oder Sie legen eine eigene an.

Die Kunst der Konfiguration

Nutzen Sie eine eigene Domain für den Linkkürzer, lassen Sie diese auf www.IhreDoman.de/yourls/ verweisen.

In /yourls/includes/config.php tragen Sie die Zugangsdaten für die Datenbank ein, und Sie setzen dort Ihre Kurz-Domain ein: define('YOURLS_SITE', 'http://kurz.de');

Für alle weiteren Einstellungen in dieser Datei folgen Sie einfach den Anweisungen auf der Yourls-Site.

Jetzt kommt der Punkt, an dem ich fast verzweifelt bin: Öffnen Sie die Datei /yourls/.htaccess auf dem Server (Achtung: nicht die aus dem Stammverzeichnis/Root des Servers!).
Hier müssen Sie eintragen, dass die Verweise zu dem yourls-Unterverzeichnis gehen. Und das auch dann, wenn Sie eine eigene Domain verwenden, die in das Unterverzeichnis weiterleitet. Denn beim Aufruf dieser Domain (wie http://kurz.de/) landet man ja sofort auf dem eigentlichen Server (http://IhreDomain.de/yourls/), daher ist es auch logisch, das man hier die Unterverzeichnisse angeben muss. Es sollten also in unserem Beispiel unter anderem diese drei Zeilen in der .htaccess stehen:

RewriteRule ^([0-9A-Za-z]+)/?$ /yourls/yourls-go.php?id=$1 [L]
RewriteRule ^([0-9A-Za-z]+)\+/?$ /yourls/yourls-infos.php?id=$1 [L]
RewriteRule ^([0-9A-Za-z]+)\+all/?$ /yourls/yourls-infos.php?id=$1&all=1 [L]

Damit sollte alles fertig sein und Sie können den Dienst einweihen auf: http://IhreDomain.de/yourls/admin/

Eine nette Zusatzfunktion, wenn Sie WordPress nutzen: Das zusätzlich erhältliche Plug-In Yourls: WordPress to Twitter schickt automatisch einen Tweet für jeden neuen Blogeintrag und erzeugt dafür jeweils Yourls-Kurzlinks in Ihrer eigenen Datenbank.

Nachtrag (29.10.2009, 15:45):

Ich bilde mir ein, es wäre schon gegangen, aber das Plug-In hat eben nicht ganz so funktioniert wie erwartet. Stellt man ein, dass die Yourls-Installation auf dem eigenen Server liegt, gab es Ärger beim Veröffentlichen eines neuen Blogeintrags (mit aktivierten Yourls-Plug-In). Ich bekam diese Fehlermeldung:
Warning: require_once(/yourls/includes/config.php) [function.require-once]: failed to open stream: No such file or directory in /homepages/5/d8889999/htdocs/benutzerfreunde/wp-content/plugins/yourls-wordpress-to-twitter/inc/core.php on line 133
Trägt man den Pfad aus der Fehlermeldung dann beim Yourls-Plug ein, dann geht es. Also statt wie erwartet nur
/yourls/includes/config.php
trägt man ein:
/homepages/5/d8889999/htdocs/benutzerfreunde/yourls/includes/config.php
(In meinem Fall liegt die Site bei einem großen Hoster – ich habe nur ein mittleres Webhosting-Paket, das sich den Server mit vielen anderen teilt.)

Nachtrag (12.11.2009, 16:35):

Was ärgerlich ist: Ist die Kurz-Domain nicht beim eigenen Hoster registriert, sondern nutzt man eine Weiterleitung (z. B. bei einem reinen Domainanbieter, der kein Webspace anbietet), dann passiert Folgendes:
Wenn man Yourls mit einem Passwort schützt, so dass der eigene URL-Kürzer nicht jedermann zur Verfügung steht, gibt es ein Problem mit den Cookies: Man muss sich jedesmal einloggen. Also bei jeder neuen Seite die man in Yourls aufruft. Nicht nur bei jeder Sitzung, sondern wirklich nach jeder einzelnen Seite. Und Einträge aus der Liste löschen kann man so auch nicht. Ich hatte mit dem Entwickler von Yourls Kontakt, der sehr schnell reagiert hat. Leider will (kann?) er an dem Problem nichts ändern. Aber ich habe einen Workaround gefunden, der nicht weh tut:

Man öffnet das Bookmarklet, das man mit den Yourls „Tools“ bei den eigenen Lesezeichen im Browser abgelegt hat, im Editiermodus des Browsers (bei Firefox z. B. über „Lesezeichen verwalten“). Dort sucht man die eigene URL (in meinem Fall http://bnfr.de/admin/) und ändert sie zur langen Form, also dem eigentlichen Pfad zur Yoursl-Installation (im Beispiel https://www.benutzerfreun.de/yourls/admin/index.php).
Jetzt wird beim Anlegen der Kurz-URLs der lange Pfad genutzt, es wird aber dennoch eine URL mit der Kurz-Domain erzeugt. Und zum Löschen von Einträgen aus der Liste ruft man einfach die Yourls-Installation über die lange Domain direkt auf.

11 Gedanken zu „Eigener URL-Shortener: Yourls“

  1. Hallo Jens,

    der Beitrag ist zwar nicht mehr der neuste, aber hat mir super weiter geholfen. Ich war mit der .htaccess echt am verzweifeln.
    Ich nutze YOURLS 1.5 und habe nun folgendes in der .htacces stehen:

    RewriteEngine On
    RewriteBase /produktdetails/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /produktdetails/yourls-loader.php [L]
    RewriteRule ^([0-9A-Za-z]+)/?$ /produktdetails/yourls-go.php?id=$1 [L]
    RewriteRule ^([0-9A-Za-z]+)\+/?$ /produktdetails/yourls-infos.php?id=$1 [L]
    RewriteRule ^([0-9A-Za-z]+)\+all/?$ /produktdetails/yourls-infos.php?id=$1&all=1 [L]
    RewriteRule ^([0-9A-Za-z]+)\+all/?$ /produktdetails/yourls-loader.php [L]

    Ich bin mir jetzt zwar nicht ganz sicher ob das so richtig ist, aber egal. ES FUNKTIONIERT!!!

    Silvio

    Antworten
  2. Hallo Jens,
    auch wenn der Beitrag schon etwas älter ist, so hat er mir doch sehr bei der htaccess-Problematik geholfen. Vielen Dank dafür erst einmal.
    Aber ich habe ein weiteres großes Problem, bei dem Du mir vielleicht helfen kannst.

    Ich habe meine Kurz-URL auch bei einem anderen Domainbetreiber liegen. und dort eine 301-Weiterleitung auf die Domain bei meinem Bloghoster hinterlegt. Yourls liegt bei mir in einem separaten Ordner http://www.domain.de/kurzurl. Sobald ich diese Domain in der config.php hinterlege, funktioniert das Ganze auch wunderbar. Hinterlege ich dort aber die weitergeleitete Kurz-URL, wird mir das Backend von Yourls ohne CSS angezeigt und ich komme nicht in den Adminbereich.
    Erzeuge ich eine Kurz-URL mit der richtigen Domain und tausche dann meine Domain gegen die Kurz-URL händisch aus, erfolgt die Anzeige korrekt. Das kann aber nicht im Sinne des Erfinders sein.

    Hast Du vielleicht noch einen Tipp für mich, was ich möglicherweise falsch mache? Vielen Dank schon mal vorab.

    Gruß Stephan

    Antworten
    • @Stephan,
      prima, wenn der Post Dir geholfen hat. Ich bin mir nicht sicher, ob ich Dir helfen kann. Aber ich versuche es mal. Kannst Du mir dazu nochmal genau erklären, was Du machst? Am besten mit den jeweiligen URLs, die Du verwendest. Und vielleicht sogar einem Screenshot zu „Backend von Yoursl ohne CSS“ – da kann ich mir nämlich nichts darunter vorstellen – ist das die Login-Seite in den Admin-Bereich?
      Schönen Gruß,
      Jens

      Antworten
  3. @Jens,
    Danke erst mal für Deine Antwort und dem Willen zu helfen. 😉

    Es ist wirklich schwierig zu beschreiben, aber ich versuche es nochmal anhand der Echtdaten:

    Die Yourls- Dateien liegen bei mir auf dem Server im Verzeichnis „kurzurl“, so dass sich daraus die URL http://www.stelev.de/kurzurl ergibt. Diese habe ich in der config.php als entsprechende Yourls-Kurz-URL hinterlegt. Wenn ich jetzt den Login-Bereich von Yourls aufrufe, dann tue ich das über http://www.stelev.de/kurzurl/admin/index.php – funktioniert auch wunderbar. Anmeldung kein Problem, Erstellung der Shorten-URL kein Problem, sieht dann halt wie folgt aus: http://www.stelev.de/kurzurl/1
    Finde ich aber noch zu lang. Aufgrund dessen habe ich mir bei enem anderen Dienst eine preiswerte Kurz-URL besorgt – lev.li

    Diese hat eine 301-Weiterleitung auf die URL http://www.stelev.de/kurzurl bekommen. Damit ich die Kruz-URL bei Yourls nutzen kann, gehe ich mal davon aus, dass diese auch in der config.php als entsprechende Yourls-URL hinterlegt werden muss. Wenn ich das tue, zeigt mir der Browser nach ellenlangem laden zwar die Login Seite an, aber ohne jegliche optisch korrekte Darstellung und ich kann mich nicht anmelden.
    Tausche ich dagegen in der config.php „http://lev.li“ gegen „http://www.stelev.de/kurzurl“ wieder aus, funktioniert wieder alles prächtig. Ich kann sogar in der über das Bookmarklet erzeugten Adresse den Part „www.stelev.de/kurzurl“ händisch gegen „lev.li“ austauschen und die Links funktionieren.
    Ich möchte aber, dass die Kurz-URl von vornherein in der Form „http://lev.li/1“ ausgegeben wird.

    Ich hoffe, dass dies jetzt etwas verständlicher war. Vielen Dank vorab schon mal für Deine geistigen Bemühungen. 😉

    Gruß Stephan

    Antworten
    • @Stephan,

      Ok, verstehe jetzt schon mehr. Vielleicht bist Du ja mit diesem Ansatz zufrieden:

      In der config.php von Yourls habe ich eingetragen:
      define('YOURLS_SITE', 'http://bnfr.de'); //

      Dann habe ich beim Domainanbieter ein URL-Hiding (versteckte Weiterleitung) angelegt auf:
      http://yourls.jjac.de/

      Damit kann ich dann URLs machen wie:
      bnfr.de/kurz

      Das ist zwar nicht elegant, funktioniert aber einwandfrei. Und nachdem der Traffic bei den paar gekürzten URLs bei mir sehr gering ist, reicht das für meine Zwecke.

      Wenn Dir was Eleganteres einfällt, dann lass‘ es mich wissen!

      Viel Glück,
      Jens

      Antworten
  4. Hallo Jens,
    ich habe es jetzt dank der Hilfe eines Freundes auf eine etwas andere Art und Weise hinbekommen.

    Danke Dir für Deine Hilfe und wünsche Dir ein frohes Osterfest. 😉

    Gruß Stephan

    Antworten
  5. Hallo, so wie es scheint, kann man ja in der Standardkonfiguration nur die URLs entweder mit oder ohne www nutzen. Gibt es vielleicht eine Einstellung, die beide Varianten ermöglicht / zulässt?

    Antworten
    • Hallo TVSSW, ich nutze Yourls mittlerweile nicht mehr, weil es auf meiner derzeitigen Serverkonfiguration nicht funktionieren will. Daher kann ich selbst nichts testen. Aber generell würde ich raten, Links generell entweder mit www oder ohne zu teilen. Und der Server sollte so eingestellt sein, dass die Besucher generell jede URL mit oder ohne www zur entsprechenden Seite kommen. Wenn du dafür Tipps brauchst, melde dich gerne nochmal!

      Antworten

Schreibe einen Kommentar