Da einige meiner früheren Blogbeiträge an diversen Orten immer noch verlinkt sind und bekommen nun sehr viele User einen 404, da die Seite resp. mein Blog nicht mehr verfügbar ist. Die Seiten sind jedoch neu im Wiki vorhanden, jedoch mit einer anderen URL. Deshalb habe ich mir ein Shortcut Script erstellt, welche ein von mir definiertes Set an permanenten Redirects macht, damit die alten verlinkten Seiten auf das Wiki umgeleitet werden.
Zuerst muss eine MySQL Datenbank eingerichtet werden, damit die Shortcuts eingetragen werden können:
CREATE TABLE IF NOT EXISTS `shortcut` ( `id` int(11) NOT NULL AUTO_INCREMENT, `shortcut` varchar(255) collate utf8_unicode_ci NOT NULL, `destination` varchar(255) collate utf8_unicode_ci NOT NULL, `count` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) )
Das Script wird auf der 404 Seite eingerichtet. Das hat der Grund, dass die Shortcuts nur ziehen sollte, wenn eine Seite nicht mehr gefunden werden kann. Dies kann man in der .htaccess Datei einrichten.
Folgendes Script muss nun zu oberst (wichtig) eingebunden werden:
$uri = substr($_SERVER['REQUEST_URI'], 1); $querystring = ''; // Prepare querystring and request uri if (strpos($uri, '?')) { $querystring = substr($uri, strpos($uri, '?')+1); $uri = substr($uri, 0, strlen($url)-strlen($querystring)-1); } if (strpos($uri, '/')) { $uri = strrev($uri); if (substr($uri, 0, 1) == '/') { $uri = substr($uri, 1); } $uri = strrev(substr($uri, 0, strpos($uri, '/'))); } // Check for shortcut if ($uri && strlen($uri) > 0) { $link = mysql_connect('<host>', '<user>', '<password>'); if ($link) { $db = mysql_select_db('<database>', $link); if ($db) { $query = mysql_query("SELECT id, destination FROM shortcut WHERE shortcut = '".mysql_real_escape_string($uri)."';"); if (mysql_num_rows($query)) { $data = mysql_fetch_assoc($query); mysql_query("UPDATE shortcut SET count = count+1 WHERE id = '".$data['id']."';"); header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$data['destination']); } } } }
Die Shortcuts könnt ihr nun einfach in die Datenbank einfügen. Bei count solltet ihr zum Beginn immer 0 lassen, damit auch gezählt werden kann. Hier noch ein Beispiel eines eintrages:
INSERT INTO `shortcut` (`id`, `shortcut`, `destination`, `count`) VALUES (1, 'wiki', 'http://wiki.aquasonic.ch', 0);
Dies redirected in meinem Fall http://www.aquasonic.ch/wiki auf http://wiki.aquasonic.ch