brauche dringend Hilfe. Ich habe wie folgt beschrieben (in der Version 4.4.4 hat es ohne weiteres geklappt) versucht, über eine .htaccess aus den dynamischen Seiten zwecks SUMA-Optimierung HTML-Seiten zu machen.
Ich sehe beim Aufrufen der URL nur die Home-Seite, also die Startseite der Hauptnavigation. Sobald ich aber in einer Navigation (Hauptnavi oder Servicenavi) auf einen Link klicke, wird keine Seite angezeigt, in der Adressleiste des Browsers steht allerdings "http://www.meineseite.de/cms/3.html". Das Modul "Artikelliste" habe ich nicht geändert und die Seiten werden angezeigt. Nun weiß ich nicht mehr weiter, es kann doch nur an der Einstellung in den beiden Navi-Modulen liegen - oder?(1) index.html
als erstes bin ich auf die index.html mit einer weiterleitung auf die front_content.php im ordner /cms gestossen. die hilft den robots (z.B. google) nicht wirklich - also wurde die gelöscht und die front_content.php in eine index.php kopiert (achtet darauf, dass die in der httpd.conf als DirectoryIndex deklariert ist - sollte auf den meisten systemen der fall sein).
(2) apache - alle ohne eigenen server gehen direkt zu (3)
ab jetzt wird mod_rewrite benötigt. das muss im apache installiert sein (LoadModule rewrite_module modules/mod_rewrite.so). wenn ihr die konfiguration des rewrite modules in einem .htaccess file vornehmen wollt, muss der apache das für dieses verzeichnis auch erlauben:
im entsprechenden <directory /pfad/zur/webroot/> container muss die direktive AllowOverride den parameter FileInfo und die direktive Options den parameter FollowSymLinks enthalten.
Lautet die AllowOverride direktive z.B. "AllowOverride FileInfo Limit Options" oder "AllowOverride All" und fehlt die direktive "Options FollowSymLinks", könnt ihr auch in das .htaccess file die zeile "Options +FollowSymLinks" einfügen
(3) contenido
hier bin ich unter "Style" -> "Module" in das modul "Hauptnavigation" gegangen und habe jeweils für die 1. bis 3. navi ebene die zeile
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'].'&client='.$client.'&lang='.$lang));
durch
$tpl->set('d', 'HREF', $sess->url('/cms/'.$data['idcat'].'.html'));
ersetzt.
(4) mod_rewrite
in den ordner /cms kommt nun ein .htaccess file mit mindestens folgendem inhalt:
RewriteEngine on
RewriteRule ^([0-9]{1,9}).html$ /cms/front_content.php?idcat=$1&client=1&lang=1
da auf der fraglichen site nur ein client und eine sprache zum einsatz kommen, werden diese beiden query parameter in der RewriteRule einfach fest hinten angehängt (kann man wohl sogar einfach weg lassen)
werden in euren sites mehr parameter in den URLs übergeben, müssen die ersetzungen und RewriteRules entsprechend modifiziert werden.
wer weiterleitungen einsetzt oder neben der Hauptnavigation noch weitere links suchmaschinenfreundlich gestalten möchte, muss dann jeweils im entprechenden modul die instruktion zur erzeugung der URL (oben: $tpl->set('d', 'HREF', ...) ändern und /oder weitere RewriteRules hinzu fügen und/oder diese modifizieren (für mehrere paramter bieten sich virtuelle verzeichnisse an).
Diese könnten dann z.B. so aussehen:
RewriteRule ^([0-9]{1})/([0-9]{1,9}).html$ /cms/front_content.php?idcat=$1&client=1&lang=$2
wenn mehrere sprachen eingesetzt werden und die ersetzung des HREF strings in den templates mittels
$tpl->set('d', 'HREF', $sess->url('/cms/'.$lang.'/'.$data['idcat'].'.html'));
erfolgt (voraus gesetzt, ihr nutzt nicht mehr als 9 sprachen )
(5) /conlib/session.inc (freiwillig) (VORSICHT)
die default einstellung in der sesion.inc ist meiner meinung nach zwar news- aber nicht suchmaschinenfreundlich: der inhalt ist laut header seit juli 1997 ungültig, die seite wurde gerade erst modifiziert und darf nicht zwischengespeichert werden.
ändert man in der session.inc die zeilen
var $allowcache = "no";
var $allowcache_expire = 1440;
auf
var $allowcache = "public";
var $allowcache_expire = 129600;
dann haben wir einen gültigkeitsintervall von 90 tagen seit der letzten änderung des artikels, ohne dass ein redakteur dies unter "Eigenschaften" für jeden artikel angeben muss (macht eh keiner) und google braucht keine angst zu haben, schon in der nächsten sekunde veraltete inhalte indiziert zu haben.
das ergebnis ist dann um größenordnungen suchmaschinenfreundlicher als die originalkonfiguration.
Hilfsnavigation:
href="front_content.php?idcat='.$db->f("idcat").'"
und ersetze diesen durch Code:
href="' . $db->f("idcat") . '.html"
Hoffe auf Hilfe,
Gruß, Martin