23. September 2012

Short-Links für WordPress mit eigener Domain

Man stelle sich vor, man will bei seiner Webseite oder seinem Blog nicht auf einen der vielen URL-Shortener zurückgreifen sondern seine eigenen Kurz-URLs schaffen. Und dabei kein aufwändiges Plugin installieren, keine eigene Datenbank schaffen und trotzdem kurze Links für Twitter und Co. bereitstellen.

Dafür ist bei WordPress glücklicherweise nicht viel zu tun. Allerdings benötigt man natürlich selbst eine weitere und möglichst kurze Domain, über welche man die Links dann auf die Artikel der normalen Domain weiterleitet. Wer also keine eigene kurze Domain hat, braucht erst einmal nicht weiterzulesen.

Wer jedoch über etwas kurzes und griffiges als Domainnamen verfügt und Zugriff auf seine “.htaccess” hat, der kann in 5 Minuten seine eigenen Kurz-URIs generieren. Ich habe das eben einmal aus Langeweile auf unserem Nachrichtenportal hispaniolanews.de und unter Verwendung meiner Seite iap.co realisiert.

Und so funktionierts:

Nehmen wir an, die URL zu einem Artikel lautet: http://hispaniolanews.de/news/10085-dominicana-moda-groesste-modewoche-in-der-karibik/. Dann heisst der bereits von WordPress automatisch zur Verfügung gestellte “Shortlink”: http://hispaniolanews.de/?p=10085

Die Post-ID habe ich einmal fett gemacht, denn um diese Zahl dreht sich im Endeffekt alles. Sie ermöglicht die konkrete Zuordnung des Artikels. Um die interne WordPress-URL nun anzupassen – weil “hispaniolanews.de” immer noch ziemlich lang ist und das “?p=” auch nicht gerade schön aussieht – verändern wir den Link mit dem von WordPress zur Verfügung gestellten Filter “pre_get_shortlink”.

add_filter('pre_get_shortlink', 'get_new_shortlink'); 

function get_new_shortlink() {
   global $post;
   $shortURL = 'http://iap.co/hn'.$post->ID;
   if(!empty($shortURL)) {
	 return $shortURL;
   } else {
	return get_bloginfo('url').'?p='.$post->ID;
   }
}

Der Code kommt einfach in die “functions.php” im Template-Ordner. Wie man in Zeile 5 sehen kann, setzen wir nun die Kurz-URL aus “http://iap.co/hn” und der Post-ID zusammen. Damit kommt im Fall von oben folgendes Ergebnis heraus: http://iap.co/hn10085.

Dies kann man sogar testen, wenn man im Artikel-Editor (bei einem bereits veröffentlichten Artikel) auf “Kurzlink anzeigen” klickt. Zudem wird der Shortlink überall dort verwendet, wo er über die Funktion “wp_get_shortlink” aufgerufen wird. Bei HispaniolaNews ist dies beispielsweise bei den Twitter-Buttons der Fall.

Den Prefix “hn” habe ich für “HispaniolaNews” eingefügt, damit ich die URL iap.co noch für andere Domains nutzen kann. Wenn man auf dieser Domain nur die Links für eine WordPress-Seite abfangen und weiterleiten will, kann man diese Buchstaben sogar noch weglassen.

Apropos “abfangen und weiterleiten”: Nun kommt die .htaccess auf dem Webspace der Kurz-Domain ins Spiel. Dort – also in unserem Fall auf iap.co – machen wir einfach eine Weiterleitung auf den usprünglichen Shortlink der WordPress-Installation, der dann wiederum automatisch gemäss den internen Permalinks-Einstellungen auf die lange und “sprechende” URL verweist und diese dann auch brav aufruft.

Hier sind ebenfalls nur wenige Code-Zeilen notwendig, damit die Sache funktioniert. Nachfolgend natürlich für das Beispiel mit dem “hn”-Prefix.

RewriteEngine On
RewriteCond %{REQUEST_URI} !^hn$ 
RewriteRule ^hn(.*)$ http://hispaniolanews.de/?p=$1 [L,R=301] 

Und damit leitet http://iap.co/hn10085 zunächst auf http://hispaniolanews.de/?p=10085 um und danach geht es zu
http://hispaniolanews.de/news/10085-dominicana-moda-groesste-modewoche-in-der-karibik/ weiter. Der Zwischenschritt funktioniert jedoch so schnell, dass man das im Browser nicht sieht und der Link direkt von der Kurz-URL auf den endgültige URL umspringt. Zudem erfolgen beide Weiterleitungen per 301 Moved Permanently, so dass die Suchmaschinen die Links für den Index ignorieren und nur die endgültige URL dann verwenden.