Shortcut Script

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.

Datenbank einrichten

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`)
)

404 Seite einrichten

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.

Script zu oberst in 404.php einfügen

Folgendes Script muss nun zu oberst (wichtig) eingebunden werden:

shortcuts.php
$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']); 
			}
		}
	}
}

Einfügen von Shortcuts

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

php/shortcut_script.txt · Zuletzt geändert: 27.12.2013 19:46 (Externe Bearbeitung)
Nach oben
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0