Manche URLs können furchtbar lang und der Umgang damit recht umständlich werden. Gerade in Blogs oder Foren gehört es mitunter zum guten Ton vernünftig lesbare URLs zu veröffentlichen aber auch zB in E-Mails sind sie ggf nützlich um den Gesamteindruck nicht negativ zu beeinflussen. Es gibt etliche Anbieter die solch einen Service anbieten, Sie können sich aber bei geeigneter, vorhandener Infrastruktur auch solch einen Service selbst installieren. Das hat diverse Vorteile: Zum einen treten Sie auch mit einer kurzen URL immer noch mit Ihrer Domain auf, zum anderen haben Sie die volle Kontrolle über den Short Link, bis hin zum Löschen.
»Yourls«1) ist eine Sammlung aus PHP-Skripten und stellt eine (Web-)Plattform bereit, welche mit Admin Menü, benutzerdefinierten URL Schlüsselwörtern, Statistiken, einer Entwickler API und vieles mehr ausgestattet ist. Die Installation ist recht simpel und läuft folgendermaßen ab:
# mkdir /home/yourls.prontosystems.org
# mysqladmin -u root -p create yourls
# mysql yourls -u root -p -e"GRANT ALL ON yourls.* TO yourls_admin@localhost IDENTIFIED BY 'yourlspasswd'"
/home/yourls.prontosystems.org# wget https://github.com/YOURLS/YOURLS/archive/1.7.tar.gz
/home/yourls.prontosystems.org# tar -zxvf 1.7.tar.gz
/home/yourls.prontosystems.org/YOURLS-1.7/user# mv config-sample.php config.php
/home/yourls.prontosystems.org/YOURLS-1.7/user/config.php
<?php /* This is a sample config file. * Edit this file with your own settings and save it as "config.php" */ /* ** MySQL settings - You can get this info from your web host */ /** MySQL database username */ define( 'YOURLS_DB_USER', 'yourls_admin' ); /** MySQL database password */ define( 'YOURLS_DB_PASS', 'yourlspasswd' ); /** The name of the database for YOURLS */ define( 'YOURLS_DB_NAME', 'yourls' ); /** MySQL hostname. ** If using a non standard port, specify it like 'hostname:port', eg. 'localhost:9999' or '127.0.0.1:666' */ define( 'YOURLS_DB_HOST', 'localhost' ); /** MySQL tables prefix */ define( 'YOURLS_DB_PREFIX', 'yourls_' ); /* ** Site options */ /** YOURLS installation URL -- all lowercase and with no trailing slash. ** If you define it to "http://site.com", don't use "http://www.site.com" in your browser (and vice-versa) */ define( 'YOURLS_SITE', 'http://yourls.prontosystems.org' ); /** Timezone GMT offset */ define( 'YOURLS_HOURS_OFFSET', 0 ); /** YOURLS language or "locale". ** Change this setting to "localize" YOURLS (use a translation instead of the default English). A corresponding .mo file ** must be installed in the user/language directory. ** See http://yourls.org/translations for more information */ define( 'YOURLS_LANG', '' ); /** Allow multiple short URLs for a same long URL ** Set to true to have only one pair of shortURL/longURL (default YOURLS behavior) ** Set to false to allow multiple short URLs pointing to the same long URL (bit.ly behavior) */ define( 'YOURLS_UNIQUE_URLS', true ); /** Private means the Admin area will be protected with login/pass as defined below. ** Set to false for public usage (eg on a restricted intranet or for test setups) ** Read http://yourls.org/privatepublic for more details if you're unsure */ define( 'YOURLS_PRIVATE', true ); /** A random secret hash used to encrypt cookies. You don't have to remember it, make it long and complicated. Hint: copy from http://yourls.org/cookie **/ define( 'YOURLS_COOKIEKEY', 'askjdadjedjaoij' ); /** Username(s) and password(s) allowed to access the site. Passwords either in plain text or as encrypted hashes ** YOURLS will auto encrypt plain text passwords in this file ** Read http://yourls.org/userpassword for more information */ $yourls_user_passwords = array( 'admin' => 'admin' ); /** Debug mode to output some internal information ** Default is false for live site. Enable when coding or before submitting a new issue */ define( 'YOURLS_DEBUG', false ); /* ** URL Shortening settings */ /** URL shortening method: 36 or 62 */ define( 'YOURLS_URL_CONVERT', 36 ); /* * 36: generates all lowercase keywords (ie: 13jkm) * 62: generates mixed case keywords (ie: 13jKm or 13JKm) * Stick to one setting. It's best not to change after you've started creating links. */ /** * Reserved keywords (so that generated URLs won't match them) * Define here negative, unwanted or potentially misleading keywords. */ $yourls_reserved_URL = array( 'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick', 'gay', ); /* ** Personal settings would go after here. */
# a2enmod rewrite
# touch /home/yourls.prontosystems.org/YOURLS-1.7/.htaccess
# chown www-data:www-data /home/yourls.prontosystems.org/YOURLS-1.7/.htaccess
/home/yourls.prontosystems.org/YOURLS-1.7# cp sample-public-front-page.txt index.php
— pronto 2014/08/06 15:56
Bei einem öffentlich erreichbaren URL Shortener wird es unweigerlich dazu kommen, dass Spammer diesen missbrauchen. Bei uns ist das relativ schnell gegangen und wir mussten umgehend reagieren. Es gibt verschiedene Ansätze sich dem Problem zu nähern, wir haben uns dafür entschieden, das Webinterface nur für unser Haus, also interne IP-Adressen, freizugeben. Dazu haben wir folgendes PHP-Snippet am Anfang unserer »index.php« eingefügt:
index.php
$remoteIP = $_SERVER['REMOTE_ADDR']; $pos = strpos($remoteIP, '192.168.'); if($pos === false) { echo "ACCESS DENIED"; exit; }
Das og Snippet liest die IP-Adresse, welche die Seite aufruft, in eine Variable ein und vergleicht diese mit dem STring '192.168' welches die ersten beiden Oktetts des bei uns verwendeten privaten IP-Adressbereichs darstellt und stoppt das Skript, wenn es nicht von einer internen, privaten Adresse aufgerufen wird.
It's just that simple
prontosystems - we are connecting more than computers
— pronto 2014/11/25 13:49