also ich habe mir gerade die function.pathresolver.php angesehen, und dachte, man könnte die ja eigendlich noch etwas erweitern. Wenn man z.Zt. front_content.php?path=Hauptnavigation aufruft, kommt man auf die Startseite.
Man könnte jetzt noch einbauen path=Hauptnavigation&article_name=Informationen
Dann würde man nämlich den Artikelnamen auch gerewritet bekommen. Aus der DB würde man es mit Kenntnis des Pfades (in diesem Fall Hauptnavigation, catid 1) alle Artikel-Ids aus der DB con_cat_art herausholen können, die zu diesem Pfad passen. Dann in der Tabelle con_art_lang die Abfrage machen:
In einer while Schleife für jedes Ergebnis von der Abfrage der Tabelle con_cat_art (SELECT idart FROM con_cat_art WHERE catid = '$catid') könnte man folgende Abfrage hinzufügen:
SELECT idart FROM con_art_lang WHERE title = '$article_name' AND idart = '$idart'
So bekommt man dann zum Schluss entweder ein Ergebnis, das könnte man anzeigen lassen, kein Ergebnis, dann könnte man auf eine 404 Seite weiterleiten oder mehr als 1 Ergebnis, dann könnte man eine entsprechende Fehlermeldung ausgeben und eine eMail mit der genauen Fehlerbeschreibung automatisch generieren und an den Seiten-Administrator senden.
So weit bin ich mit meiner Theorie. Nur jetzt müsste ich das ganze irgendwie hier einbauen:
Code: Alles auswählen
<?php
/*****************************************
* File      :   $RCSfile: functions.pathresolver.php,v $
* Project   :   Contenido
* Descr     :   Path resolving function
* Modified  :   $Date: 2004/04/14 12:45:07 $
*
* © four for business AG, www.4fb.de
*
* $Id: functions.pathresolver.php,v 1.4 2004/04/14 12:45:07 timo.hummel Exp $
******************************************/
/**
 * prResolvePathViaCategoryNames: Resolves a path using some fuzzy logic.
 * 
 * Warning: If you use this function, try to pass a "good" path. This
 *          function doesn't guarantee that the matches are logically
 *          best-matches.
 *
 * This function operates on the actual category names.
 *
 * @param $path string Path to resolve
 * @return integer Closest matching category ID (idcat)
 */
function prResolvePathViaCategoryNames ($path)
{
	global $cfg, $lang, $client;
	
	/* Initialize variables */
	$db = new DB_Contenido;
	$categories = array();
	
	/* Pre-process path */
	$path = strtolower(str_replace(" ", "", $path));
	
	/* Fetch all category names, build path strings */
	$sql = "SELECT * FROM ".$cfg["tab"]["cat_tree"]." AS A, ".$cfg["tab"]["cat"]." AS B, ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ORDER BY A.idtree";
	$db->query($sql);
	
	$catpath = array();
	while ($db->next_record())
	{
		$cat_str = "";
		conCreateLocationString($db->f("idcat"), "/", $cat_str);
		
		/* Store path */
		$catpath[$db->f("idcat")] = $cat_str; 	
		$catnames[$db->f("idcat")] = $db->f("name");
		$catlevels[$db->f("idcat")] = $db->f("level");
	}
	
	/* Compare strings using the similar_text algorythm */	
	foreach ($catpath as $key => $value)
	{
		$value = strtolower(str_replace(" ", "", $value));
		
		similar_text($value, $path, $percent);
		
		$results[$key] = $percent; 
	}
	
	foreach ($catnames as $key => $value)
	{
		$value = strtolower(str_replace(" ", "", $value));
		similar_text($value, $path, $percent);
		
		/* Apply weight */
		$percent = $percent * $catlevels[$key];
		
		if ($results[$key] > $percent)
		{
			$results[$key] = $percent;
		}
	}
	
	arsort($results, SORT_NUMERIC);
	reset($results);
	
	return key($results);
}
?>Das ganze bringt vor allem Leuten was, die rewriten wollen. Dann könnte man nämlich wirklich solche Domains haben:
www.meinedomain.de/Unterpunkt/Unterpunkt2/Artikel.html
Rewriten ist dann einfach...
Danke schon mal

Stephan