in Contenido ist seit einigen Versionen die Unterstützung für Clean-URLs integriert, in der Version 4.8.11 wurde auch das Hauptnavigationsmodul des Beispielmandanten entsprechend angepasst, somit ist die Generierung von Clean-URLs "out of the Box" möglich. Dieses Feature ist per default nicht aktiv, lässt sich aber mit ein paar Handgriffen einstellen.
Im Folgenden werde ich die Aktivierung zur Erstellung von Clean-URLs unter Contenido 4.8.11 beschreiben.
Ein Hinweis vorab:
Nicht in allen Modulen des Beispielmandanten könnten URLs dieser Art generiert werden. Auch andere hier im Forum erhältliche Module verwenden meist noch die alte Art der Erstellung von Frontend URLs, erwartet daher bitte nicht, dass mit der folgenden Anleitung sämtliche URLs auf Clean-URLs umgestellt werden können. Um das zu erreichen, sind die URLs in allen Modulausgaben und in Plugins per Hand anzupassen. Auch ist die hier vorgestellte .htaccess nicht vollständig, d. h. es sind nicht für alle Varianten von generierten URLs Rewrite Regeln vorhanden.
Nun zur Aktivierung der Clean-URLs:
In der Datei contenido/includes/config.misc.php kann ab Zeile 205 der gewünschte UrlBuilder eingestellt werden. Mit dem UrlBuilder lassen sich im Grunde jede Art von URLs zu Frontendseiten generieren. Welche UrlBuilder zur Verfügung stehen, könnt ihr aus dem Inhalt des Verzeichnisses contenido/classes/UrlBuilder/ entnehmen. Ich empfehle, einen Blick in die darin enthaltene Sample.php zu werfen.
Nun zurück zur Konfiguration. In diesem Beispiel werden wir den UrlBuilder 'custom_path' aktivieren. Dazu reicht es aus, um den Code ab Zeile 213 von
Code: Alles auswählen
$cfg['url_builder']['name'] = 'front_content';
$cfg['url_builder']['config'] = array();
/*
// Example setting for UrlBuilder 'custom_path':
$cfg['url_builder']['name'] = 'custom_path';
$cfg['url_builder']['config'] = array('prefix' => 'rocknroll', 'suffix' => '.4fb', 'separator' => ',');
*/
Code: Alles auswählen
/*
$cfg['url_builder']['name'] = 'front_content';
$cfg['url_builder']['config'] = array();
*/
// Example setting for UrlBuilder 'custom_path':
$cfg['url_builder']['name'] = 'custom_path';
$cfg['url_builder']['config'] = array('prefix' => 'rocknroll', 'suffix' => '.4fb', 'separator' => ',');
Wir haben nun den default UrlBuilder 'front_content', der die standard Urls wie front_content.php?... generiert deaktiviert, und den UrlBuilder 'custom_path' konfiguriert. Dabei werden Urls wie
Code: Alles auswählen
/cms/front_content.php?idcat=2&lang=1
Code: Alles auswählen
/cms/Was-ist-Contenido/rocknroll,a,2.4fb
Die generierte URL enthält den Pfad zur der aktuellen Kategorie, der Aufbau der URL (ab dem letzten /) ist wie folgt:
Code: Alles auswählen
rocknroll = Ist der in der Konfiguration angegebene Präfix
, = Der in der Konfiguration angegebene Trenner zwischen diversen Parametern
a = Ein zusätzlicher Parameter der im Hauptnavigationsmodul der zur generierenden URL mitgegeben wird
2 = Ist die Kategorieid
.4fb = Der in der Konfiguration angegebene Suffix
Damit solche URLs auch wieder erkannt und richtig aufgedröselt werden, brauchen wir noch eine .htaccess Datei mit ein paar Regeln. Erstellen wir eine .htaccess Datei im Mandantenverzeichnis 'cms/' und schreiben folgende Zeilen hinein:
Code: Alles auswählen
# folgende zeilen sind bei 1und1.de zu aktivieren, damit PHP5 moeglich ist
#AddType x-mapp-php5 .php
#AddHandler x-mapp-php5 .php
<IfModule mod_rewrite.c>
# rewrite engine aktivieren
RewriteEngine on
# rewrite base angeben, noetig bei manchen providern
RewriteBase /
# requests zu front_content.php vom umschreiben ausschliessen
RewriteRule ^front_content.php.*$ - [L]
# request zum root-verzeichnis
#RewriteRule ^$ front_content.php [QSA,L]
# requests nach dem muster /Was-ist-Contenido/rocknroll,a,2.4fb umschreiben
RewriteRule ^(.*)/rocknroll,a,([0-9]+)\.4fb$ /cms/front_content.php?idcat=$2 [NC,QSA,L]
</IfModule>
Nun sollten bei Aufruf des Frontends die URLs in der Navigation umschrieben werden. Bei Klick auf eine Navigation sollte auch die richtige Seite angezeigt werden.
Das Beispiel erhebt keine Anspruch auf Vollständigkeit, auch kann es bei manchen Usern nicht in der hier gezeigten Form funktionieren. Ist aber das mod_rewrite Modul vorhanden und richtig konfiguriert, sollten keine Probleme auftauchen.
Grüße
xmurrix