Xoops mit kurzen URLs (SEO und SEF)

Wofür soll das gut sein?

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.
Wies geht zeigen wir hier ...

Dazu verwenden wir mod_rewrite vom Apache Webserver. Zuerst legt man eine .htaccess an, in der man das Umschreiben der URL veranlasst.

RewriteEngine On
#Articles
RewriteRule ^article([1-9][0-9]*).html /modules/news/article.php?storyid=$1

  D.h. aus der Anfrage meineurl/article10.html wird meineurl/modules/news/article.php

in include/common.php (Zeile 226)

$xoopsRequestUri = xoops_getenv('REQUEST_URI');
if (!$xoopsRequestUri) {
   $xoopsRequestUri = !xoops_getenv('SCRIPT_NAME') ? getenv('REQUEST_URI') : xoops_getenv('SCRIPT_NAME');
}

wird geändert in:

// $xoopsRequestUri = xoops_getenv('REQUEST_URI');
// if (!$xoopsRequestUri) {
$xoopsRequestUri = !xoops_getenv('SCRIPT_NAME') ? getenv('REQUEST_URI') : xoops_getenv('SCRIPT_NAME');
// }

Xoops hat da anscheinend ein Problem mit der Request URI. Aber so geht es.

Zum Ersetzen der URLs beim Anzeigen verwendet man am einfachsten 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.

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.

:wq

 

Ähnliche Artikel