lilURL: Dein eigener Url-Shortener

Was sind Url Shortener?

Für alle, die das nicht kennen: Url Shortener sind Services, die aus einer langen Url (Bsp: http://sebmos.at/google-analytics-vs-piwik-open-source/) eine kurze Url (Bsp: http://tinyurl.com/d6pa7x) machen. Tinyurl ist der bekannteste dieser Services, es gibt aber mittlerweile dutzende Alternativen, manche mit zusätzlichen Features. Bit.ly bietet Statistiken an, BurnURL eine Bewertungs-Funktion.

Wichtig wurden diese Services mit dem Aufkommen von Twitter & Co, wo die Länge von Nachrichten stark beschränkt wird und jedes einzelne Zeichen zählt.

Was ist das Problem?

Hinter diesen Services stehen Firmen, die Geld verdienen wollen und zusperren, wenn sie das nicht schaffen. Dadurch entstünde das Problem, dass plötzlich tausende Urls ins Leere gingen.

Weiters vergibt man damit einen Teil des Werts des Links (aus Suchmaschinen-Optimierungs-Sicht). Für die Benutzer/innen besteht auch noch das Problem, dass sie nicht sehen, wohin sie kommen, wenn sie eine Url anklicken.

Die Lösung: lilURL

Eines dieser Probleme kann man lösen, indem man einen eigenen Url Shortener betreibt, für die eigenen Links. lilURL, ein simples Open Source-Projekt, ist diese Lösung.

Das Projekt ist zwar schon einige Jahre alt, wird schon lange nicht mehr weiterentwickelt und hat einige gravierende Defizite, ich hab den Code daher genommen und die größten Probleme behoben.

lilURL ist schnell installiert und macht nur eine Sache: Urls verkürzen. Der Service ist nicht perfekt – ich hätte gerne einige kleine Features ergänzt, aber für den Moment reicht es.

Mein Url Shortener befindet sich unter http://r.sebmos.at/, ich warne aber: Ich garantiere keine Uptime, er ist eigentlich nur für mich gedacht. (Und für Demo-Zwecke, falls jemand probieren will, wie sowas funktioniert.)

Hier herunterladen

Falls ihr lilURL erweitert, würde ich mich sehr über ein E-Mail mit den Änderungen freuen!


Themen im Artikel

Meistkommentierte Artikel

33 Kommentare »

Gerald Bäck
21. April 2009 @ 21:59 Uhr

Danke für die Software. Hab sie auch schon bei mir unter http://r.baeck.at installiert. Mein derzetiges Problem ist nur, dass die HOME_URL Variable zwei // am Ende der Url macht.

In Zukunft würde ich gerne das Projekt nutzen, um meine PHP Kenntnisse aufzufrischen und damit ein bisserl mitzuentwickeln, allerdings hab ich keine Ahnung wie man das so macht in der Open Source Szene!-)

lG Gerald.

Sebastian Moser
21. April 2009 @ 23:17 Uhr

Immer gerne! Ich hab mir ja gedacht, dass das auch andere interessieren könnte. ;)

Open Source-mäßig ist das Projekt sehr simpel aufgebaut: Ich hab den Original-Code von Sourceforge genommen, das PRojekt ist aber inaktiv. Meine Änderungen hab ich auf meinem Server zum Download bereit gestellt. Wenn du was erweiterst, kannst du das entweder selbst zum Download bereit stellen, oder mir schicken (worüber ich mich sehr freuen würde), oder natürlich beides.
Sollt daraus tatsächlich ein größeres Projekt werden (mögliche große Features wäre zB eine Statistik-Funktion oder Voting-Funktionen á là BurnURL & Diggbar), kann man das jederzeit in ein Source Code Repository tun.

Daniel Baumann
17. Juni 2009 @ 20:17 Uhr

Hm, ich hab das Problem, dass bei AUfruf von example.com/lilurl nicht die index.php automatisch angezeigt wird, sondern ein 404 kommt.

Wenn ich example.com/lilurl/index.php aufrufe, komme ich zur Eingabe. Nach dem absenden wird nicht die verkürzte URL angezeigt, sondern wieder ein 404.

Vermutlich muss ja die index.php wieder aufgerufen werden.

Was kann ich tun, damit es funzt?

Gerald Bäck
17. Juni 2009 @ 22:23 Uhr

@daniel das liegt aller voraussicht nach an deinem webserver. Du musst dort irgendwo konfigurieren können, dass index.php die default site ist.

Sebastian Moser
17. Juni 2009 @ 22:41 Uhr

@Daniel
lilURL läuft (im Moment) nur unter Linux, da nur Linux im Moment die sehr einfache Methode zum “rewriten” der Urls (also das interne weiterleiten von /blabla zu /index.php) via .htaccess-Datei ermöglicht. (Die Datei ist im Ordner drin.

Da nicht einmal index.php als Standard-Datei in deinem Ordner erkannt wird, vermute ich, dass du einen Windows-Server verwendest.

Als Abhilfe kannst du entweder ein Url-Rewrite-Plugin (http://www.isapirewrite.com/) installieren und die Rewrite-Regeln aus der .htaccess-Datei in das entsprechende Format umschreiben (es dürfte weitgehend gleich sein, aber ich garantier da mal nichts). Der Windows Server 2008 (Vista Server) kann mittlerweile auch Url-Rewrites, ich hab mir das aber noch nicht angeschaut. Vielleicht werde ich das in einem späteren Update einbauen.

Daniel Baumann
18. Juni 2009 @ 17:16 Uhr

Danke für Euer Feedback.

Es handelt sich um einen Apache-Server. Als Shared-Webhosting. Lt. den FAQ des Providers sollte mod_rewrite aktiv sein. Bei Wordpress funzt es ja auch.

Als Frontend hab ich Confixx zur Verfügung, kann aber nichts finden, wo man das mit der index.php einstellen kann. Meiner Meinung nach hat der automatische Aufruf sonst auch immer geklappt.

Daniel Baumann
18. Juni 2009 @ 17:41 Uhr

kleines Zwischenupdate:

Der Aufruf des Formulars funktioniert inzwischen auch ohne das die index.php aufgerufen werden muss.

Ich hab mir kurzerhand die .htaccess von Wordpress geliehen:
RewriteEngine On

RewriteBase /
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Ich kann also eine URL zum verkürzen eingeben und die kurz URL wird auch angezeigt. Merkwürdigerweise numerisch. Also der erste Link heißt example.com/lilurl/1, der nächste example.com/lilurl/2 etc.

Wenn ich den kurz-Link anklicke, bekomme ich wieder den 404 von meiner Seite, d.h. eine Weiterleitung erfolgt nicht.

Kann man in der conf.php noch was groß falsch machen?

Sebastian Moser
18. Juni 2009 @ 17:53 Uhr

Ok, eine .htaccess-Datei wird aber an sich mitgeliefert. Falls du die nicht drin hast, dann lad dir am besten lilURL neu runter. Vielleicht ist die DirectoryIndex-Regel notwendig, dann kopier sie dir auf jeden Fall wieder rein. Ich bin immer davon ausgegangen, dass index.php automatisch die Default-Url ist.

Es wäre vielleicht hilfreich, wenn du uns eine Url zu deiner Installation postest, vielleicht kann ich ein Problem erkennen!

Die numerischen Urls sind übrigens Absicht. Die Url-IDs fangen mit 0-9 an, dann gehts mit a-z weiter. Danach beginnen die zweistelligen, mit “00″, “01″, bis “0z”

Frank
26. Juni 2009 @ 12:56 Uhr

Hey danke für deine Arbeit! Die Weiterentwicklung ist dir gut gelungen.

Zoltan
19. Juli 2009 @ 20:00 Uhr

Hallo,
Ich hatte das Lilurl von http://lilurl.sourceforge.net/, die Installation auf meiner Kiste Zuhause funtze gleich auf anhieb, aber die Installation auf meinem Webserver ging nur soweit das;
Der Aufruf des Formulars funktioniert, kann also eine URL zum verkürzen eingeben und die kurz URL wird auch angezeigt. Ein Blick in die MySql DB zeigt auch das die Url drin ist. habe einfach eine ID 2sca drüber editiert. Also der erste Link heißt xyyx.eu/2sca, der nächste xyyx.eu/2scb etc.
In der .htaccess-Datei muss ich dem RewriteEngine On ein # voranstellen, weil ich sonst fehler 500 bekomme.
Wenn ich den kurz-Link anklicke, bekomme ich den 404 von meiner Seite, d.h. eine Weiterleitung erfolgt nicht.
Kann mir dabei vllt einer helfen, bin nicht besonders gut mit .htaccess

sorry für den doppel-post, aber der Erste war zu schlampig. ;-(

Sebastian Moser
19. Juli 2009 @ 21:18 Uhr

Zuerst einmal: Ich habe nichts mit lilURL von SourceForge zu tun. Ich hab den Open Source-Code genommen und verbessert, “meine” Version ist nur hier herunterzuladen.

Dann: Du darfst nicht die RewriteEngine deaktivieren – die RewriteEngine macht die gekürzten Urls erst anklickbar. Wenn du einen 500-Fehler bekommen hast, war entweder die .htaccess-Datei kaputt (was sicher nicht der Fall war) bzw. du hast irgendetwas geändert (das schon eher). Eine andere Möglichkeit wäre, dass dein Server .htaccess bzw. die RewriteEngine gar nicht unterstützt. (mod_rewrite ist ein Apache-Modul, frag am besten deinen Web-Hoster, ob mod_rewrite aktiviert ist.)

Vor allem aber: Siehe ganz oben – ich hab die Version von SourceForge stark verändert und kenne den Quellcode nicht.

Zoltan
20. Juli 2009 @ 07:33 Uhr

>>Zuerst einmal: Ich habe nichts mit lilURL von SourceForge zu tun. Ich hab den Open Source-Code genommen und verbessert, “meine” Version ist nur hier herunterzuladen.

Ich wollte damit nur sagen, habe bei beiden Versionen den gleichen Fehler.

>>frag am besten deinen Web-Hoster, ob mod_rewrite aktiviert ist
Der hats hinbekommen

Trotzdem Danke

Zoltan
20. Juli 2009 @ 21:10 Uhr

Hallo,
kannst Du mir bitte ein Beispiel zeigen, wie ich dein api-create.php aufrufen/anwenden kann.

Im Voraus schon mal vielen Dank!!

SKYROCKER
1. August 2009 @ 15:22 Uhr

Hallo,

Schon mal daran gedacht die funktionen so zu erweitern dass der Benutzer die Möglichkeit hat einen eigene kurze URL zu wählen, wie z.B. bei bit.ly ?

MfG
David

Sebastian Moser
1. August 2009 @ 17:02 Uhr

Ja, hab ich, aber es war schwieriger als ich gedacht hab und es ist mir persönlich als Feature nicht wichtig.

Ich freue mich aber über Code-Erweiterungen!

lg,
Sebastian

[...] zum eigentlichen Thema. Ich habe mir einen eigenen Url-Verkürzer eingerichtet. Inspiriert von Sebmos und dem beinahe Ableben von tr.im habe ich mir unter i.sadma.de einen Url-Verkürzer auf meinem [...]

- micenterprise.de
9. September 2009 @ 18:26 Uhr

[...] zum eigentlichen Thema. Ich habe mir einen eigenen Url-Verkürzer eingerichtet. Inspiriert von Sebmos und dem beinahe Ableben von tr.im habe ich mir unter i.sadma.de einen Url-Verkürzer auf meinem [...]

zoltan
9. September 2009 @ 18:27 Uhr

Hallo, kannst mal drüber fliegen, warum der schnipsel bei mir nicht geht
im übrigen klasse skript!!

ich kann nur ganz wenig php!!

diese function wird in der index.php bei:

if ( $location != -1 )
{
$gezaehlt = $lilurl->adiere_url($id);

header(‘Location: ‘.$location $gezahlt, true, 301);
}

aufgerufen…..

function adiere_url($id)
{
$q = ‘SELECT count FROM ‘.URL_TABLE.’ WHERE (id=”‘.$id.’”)’;
$result = mysql_query($q);
if($row = mysql_fetch_array($result)) {
$value = $row['count'];
$value++;
$q= ‘UPDATE ‘.URL_TABLE.’ SET count = ‘.$value. ‘ WHERE (id=”‘.$id.’”)’;
return mysql_query($q);
}
}
aber irgendwie zählt es nichts
in die tabelle habe ich das feld count(varchar) eingefügt

danke
lg.
Zoltan

Sebastian Moser
9. September 2009 @ 18:34 Uhr

ich würd mal sagen, dass du folgende zeile:
$q = ‘SELECT count FROM ‘.URL_TABLE.’ WHERE (id=”‘.$id.’”)’;
auf folgendes ändern musst:
$q = ‘SELECT count FROM ‘.URL_TABLE.’ WHERE (id=\”.$id.’\')’;

(also die doppelten anführungsstricherl durch einzelne ersetzen.)

außerdem ist “count” ein reserviertes wort in mysql, also musst du entweder ein anderes nehmen oder das feld immer so schreiben: `count`, folgendes wäre dann das korrekte sql-statement:
$q = ‘SELECT `count` FROM ‘.URL_TABLE.’ WHERE (id=\”.$id.’\')’;

es ist aber nicht notwendig, dass du zuerst den wert abfragst und dann aktualisierst, du kannst stattdessen folgendes statement einsetzen und den select-schmafu weg lassen:
$q= ‘UPDATE ‘.URL_TABLE.’ SET `count` = `count` + 1 WHERE (id=\”.$id.’\')’;

übrigens: “addieren” schreibt man mit zwei “d”.

zoltan
9. September 2009 @ 19:05 Uhr

$q= ‘UPDATE ‘.URL_TABLE.’ SET `clicks` = `clicks` + 1 WHERE (id=\”.$id.’\’)’;

aber das geht auch nicht

Sebastian Moser
9. September 2009 @ 20:39 Uhr

bitte ein bisschen mitdenken, zoltan. ;) (eigentlich müsstest du den fehler selbst finden, aber: wordpress anstatt des doppelten anführungsstricherl in \” musst du zwei einfache machen. (wordpress ersetzt die aber automatisch.)

lies dir einfach meinen beitrag von vorher durch, da steht eh drin, was du machen sollst.

zoltan
10. September 2009 @ 13:50 Uhr

$q= ‘UPDATE ‘.URL_TABLE.’ SET clicks = clicks + 1 WHERE id= “‘.$id.’”‘;

so gehts nun doch

falls es nicht so sichtbar bleibt
die anführungstricherl von links nach recht
1 1 1 d 1 1 d 1
wobei 1 für einzelnes und d für doppeltes anführungszeichen steht

danke schön, für die hilfe!!

servus

[...] lilURL – Dein eigener URL-Shortener [...]

Jim
8. Oktober 2009 @ 15:18 Uhr

ich wollte schreiben ich habe beim install einen MyISAM error in der db.aber es hat nun geklappt.
lob und danke für das tolle script!

Hogi
9. Februar 2010 @ 17:12 Uhr

Da ist ein kleiner Fehler in lilurl.php. Im else-Zweig muß mam ‘?=url’ durch ‘?id=’ ersetzen und $lilurl durch $this. Dann klappt’s auch ohne REWRITE. Also so:

function get_shortened_url($longurl)
{
if (REWRITE)
return URL_HOME . $this->get_id($longurl);
else
return URL_HOME . ‘?id=’ . $this->get_id($longurl);
}

Dede
27. April 2010 @ 19:36 Uhr

Hallo ihr lieben, ich habe auch eine Frage und zwar: Wie ist es möglich, dass ein Link zurückgerufen wird (Call-Back-Function hab ich bereits) und dann als $longurl verwendet wird und dann als z.B. http://r.sebmos.at/0w angezeigt wird?

Sebastian Moser
5. Juni 2010 @ 10:29 Uhr

Sorry für die verspätete Antwort, dein E-Mail ist untergegangen. Zu deiner Frage: Wie meinst du – du willst eine URL zu einer Kurz-URL umwandeln? Das ginge so:
http://r.sebmos.at/api-create.php?url=http://lokales.at/

Bernd
6. Juni 2010 @ 10:27 Uhr

Sersn, erstmal sehr geiles Script, allerdings hätte ich da ne kleinigkeit, und zwar besteht die möglichkeit hinter den alphanummerichen Zahlen ein “.html” anzuhängen?
Wenn ja wäre ich über den Snippet dankbar, da ich keine Ahnung von PHP habe :( ^^

Danke!

Sebastian Moser
6. Juni 2010 @ 15:17 Uhr

Hallo Bernd!

Ein “.html” ändert nichts daran, dass das PHP-Code ist. ;) Bei einem URL Shortener kommst du um eine Skript- oder Programmiersprache nicht herum.
Wenn dir lilURL zu kompliziert aufzusetzen ist, solltest du dir etwas wie Bit.ly Pro (http://bitly.pro/) anschauen (wenn die eigene Domain wichtig ist), oder einen “normalen” URL Shortener (zB http://bit.ly/) verwenden.

Bernd
6. Juni 2010 @ 16:04 Uhr

hehe, erstmal danke für die schnelle Antwort.
Mir ist schon klar das es sich immernoch um ein PHP-Script handelt, ich fände es nur schöner mit html als suffix. Das aufsetzen hatte nichtmal 5 min. gedauert, ist also auch nicht mein problem, nur kenne ich mich halt mit PHP net aus. Ich habe z.Bsp. mir die Typo3-Extension von lilurl gezogen und installiert, allerdings schreibt diese ein “.l” als suffix, das gefällt mir ja noch weniger. Deshalb eben meine Frage ob eine möglichkeit besteht dieses zu ändern.

THX

Sebastian Moser
14. Juni 2010 @ 19:25 Uhr

Hm, ja, man müsste die .htaccess-Datei ändern – werd ich jetzt nicht tun, weil: Das widerspricht dem Zweck von Url Shortener – die sollen URLs so kurz wie möglich machen .. ;)
Wenns dir trotzdem wichtig ist: Man müsste das bei der .htaccess-Datei ändern, und in ein paar Links. PHP-Anpassungen sollten keine notwendig sein.

Kommentar schreiben

© Copyright 2007 - 2009 | powered by WordPress