(330, 3, 1068988400, 1, '!!!Xoops and mod_rewrite\n\nTo get short URL`s you can use mod_rewrite from Apache Webserver. First create an .htaccess, to allow to rewrite the URL.\n\n!Datei .htaccess in xoopsroot:\n\n~RewriteEngine On
\n~#Articles
\n~RewriteRule ^article(~[1-9]~[0-9]*).html /modules/news/article.php?storyid=$1
\n
\n\n\nThis means the request ~http://meineurl/article10.html will change to ~http://meineurl//modules/news/article.php?storyid=10\nin include/common.php (Row 226)\n\n;:$xoopsRequestUri = xoops_getenv(REQUEST_URI);\n;:if (!$xoopsRequestUri) {\n $xoopsRequestUri = !xoops_getenv(SCRIPT_NAME) ? getenv(REQUEST_URI) : xoops_getenv(SCRIPT_NAME);\n;:}\n\nchange to:\n\n;:// $xoopsRequestUri = xoops_getenv(REQUEST_URI);\n;:// if (!$xoopsRequestUri) {\n;:$xoopsRequestUri = !xoops_getenv(SCRIPT_NAME) ? getenv(REQUEST_URI) : xoops_getenv(SCRIPT_NAME);\n;:// }\n\n\nXoops seems to have a problem with the Request URI. But so it works.\n\nZum Ersetzen der URLs beim Anzeigen verwende ich eine Funktion aus der Smarty Template Engine: register_outputfilter\nDiese muss in der footer.php eingebaut werden:\n\nIn der footer.php kommt zwei mal die Stelle $xoopsTpl->setCaching(0) vor. An diesen Stellen muss folgendes eingebaut werden (Hier inkl der setCaching Funktion):\n\n\n $xoopsTpl->xoops_setCaching(0);\n include XOOPS_ROOT_PATH . /outfilter.php;\n $xoopsTpl->register_outputfilter("x_rewrite_url");\n\nDies weist die Smarty Template Engine an, die Funktion x_rewrite_url aufzurufen.\nDas ganze wird klarer, sobald man die Datei outfilter.php sich anschaut:\n\n\n;:<?php\n;:function x_rewrite_url($tpl_output, &$smarty) {\n;:$in = array(\n;:~#article\n;:"/modules\\/news\\/article.php\\?storyid=(~[1-9]~[0-9]*)&page=(~[1-9]~[0-9]*)/",\n;:"/modules\\/news\\/article.php\\?storyid=(~[1-9]~[0-9]*)/",\n;:);\n;:$out = array(\n;:"article\\\\1_\\\\2.html" ,\n;:"article\\\\1.html" ,\n;: );\n;: $tpl_output = preg_replace($in, $out, $tpl_output);\n;: return $tpl_output;\n;: }\n;:?>\n\nGrob gesprochen wird mittels des preg_replace Commandos der Teil, der in $in steht durch den in $out ersetzt und per return wieder zurückgegeben.\n\nWofür nun das alles?\n\nEs geht um die bessere indizierbarkeit durch Searchengines (Stichwort: Search friendly URLs). Manche Searchengines mögen Parameter nicht.\nEbenso mögen manche Suchserver die Umlenkung zur Hauptseite nicht.\n\nNach all den Änderungen kann man seine Xoops Seite mittels article1.html den Artikel mit der Nummer 1 anzeigen.\n\nFortführend dazu kann man noch die /index.php anpassen.\nMan könnte, wenn eine Suchmaschine ankommt, gleich eine Artikelübersicht präsentieren ohne den Grafischen Schnickschnack mit den kurzen URLs.\nDas erleichtert bessere Plazierungen in den Suchservern.\n\nEin kleines Code Schnippsel dazu, was man in die /index.php Datei einfügen könnte:\n----\n
\n if((ereg("Nav", $_SERVER~["HTTP_USER_AGENT"])) ||
\n (ereg("Gold", $_SERVER~["HTTP_USER_AGENT"])) ||
\n (ereg("X11", $_SERVER~["HTTP_USER_AGENT"])) ||
\n (ereg("Mozilla", $_SERVER~["HTTP_USER_AGENT"])) ||
\n (ereg("Netscape", $_SERVER~["HTTP_USER_AGENT"])) AND
\n (!ereg("MSIE", $_SERVER~["HTTP_USER_AGENT"])) AND
\n (!ereg("Konqueror", $_SERVER~["HTTP_USER_AGENT"])))
\n $browser = "Netscape";
\n // Opera needs to be above MSIE as it pretends to be an MSIE clone
\n
\n elseif(ereg("Opera", $_SERVER~["HTTP_USER_AGENT"])) $browser = "Opera";
\n elseif(ereg("MSIE", $_SERVER~["HTTP_USER_AGENT"])) $browser = "MSIE";
\n elseif(ereg("Lynx", $_SERVER~["HTTP_USER_AGENT"])) $browser = "Lynx";
\n elseif(ereg("WebTV", $_SERVER~["HTTP_USER_AGENT"])) $browser = "WebTV";
\n elseif(ereg("Konqueror", $_SERVER~["HTTP_USER_AGENT"])) $browser = "Konqueror";
\n elseif((eregi("bot", $_SERVER~["HTTP_USER_AGENT"])) || \\
\n (ereg("Google", $_SERVER~["HTTP_USER_AGENT"])) || \\
\n (ereg("Slurp", $_SERVER~["HTTP_USER_AGENT"])) || \\
\n (ereg("Scooter", $_SERVER~["HTTP_USER_AGENT"])) \\
\n || (eregi("Spider", $_SERVER~["HTTP_USER_AGENT"])) \\
\n || (eregi("Infoseek", $_SERVER~["HTTP_USER_AGENT"]))) $browser = "Bot";
\n else $browser = "Other";
\n // Jetzt steht in $browser entweder der Browser oder "Bot" oder "Other"
\n if ($browser == "Bot") {
\n echo "Hallo Suchmaschine, hier deine Einträge";
\n // Hier kann man dann der Suchmaschine das präsentieren, was man will
\n } else { // Hier steht der "alte" Weiterleitungscode
\n if ( isset($xoopsConfig~[startpage]) && $xoopsConfig~[startpage] !=
\n "" && $xoopsConfig~[startpage] != "--" )
\n {header(Location: .XOOPS_URL./modules/.$xoopsConfig~[startpage]./);
\n exit();
\n } else {
\n $xoopsOption~[`show_cblock] =1;
\n include "header.php";
\n include "footer.php";
\n }
\n }
\n
\n\n----\n\n\n!!!Note: Rest of Translation follows Predator\n\n
\n[Back to the Mainpage | HomePage]', 'a:4:{s:6:"author";s:8:"Predator";s:9:"author_id";s:8:"Predator";s:6:"markup";d:2;s:8:"pagetype";s:8:"wikitext";}'),

![[Main Page]](/modules/mediawiki/images/mediawiki.png)





