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

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






