Aktivierung der Erstellung von SEO-URLs

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Aktivierung der Erstellung von SEO-URLs

Beitrag von xmurrix » Di 10. Feb 2009, 23:25

Hallo zusammen,

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' => ',');
*/
in

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' => ',');
umzustellen.

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
in

Code: Alles auswählen

/cms/Was-ist-Contenido/rocknroll,a,2.4fb
umschrieben.

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
Mit anderen Werten kann die Ausgabe der URLs den eigenen Wünschen angepasst werden.

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
Zuletzt geändert von xmurrix am Do 9. Apr 2009, 21:21, insgesamt 1-mal geändert.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

birke
Beiträge: 92
Registriert: Mo 2. Feb 2009, 16:58
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von birke » Sa 14. Feb 2009, 10:58

Danke für die Erklärung, wie man diese SEO URL einrichten kann in der aktuellen Contenido Version.

Meine Testinstallation generiert nun auch die SEO-URLs, doch leider findet es die Seiten nicht mehr wenn man einen Navigationspunkt anklickt. Ich habe die besagten Code-Zeilen ausgetauscht und die .htaccess Datei im Ordner /cms/cms mit den angegeben Informationen erstellt. Mod_rewrite ist laut php.info geladen und müsste funktionieren, wenn es den URL konvertiert.

Code: Alles auswählen

Not Found

The requested URL /cms/cms/loesungen/rocknroll,a,3.4fb was not found on this server.

Apache/2.0.59 (Unix) PHP/5.2.6 DAV/2 Server at localhost Port 8888
Muss nun noch etwas im Backend angepasst werden, damit es funktioniert?

Danke schon mal!

Grüße, Birke

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von xmurrix » Sa 14. Feb 2009, 22:18

Hallo birke,
birke hat geschrieben:...Ich habe die besagten Code-Zeilen ausgetauscht und die .htaccess Datei im Ordner /cms/cms mit den angegeben Informationen erstellt. Mod_rewrite ist laut php.info geladen und müsste funktionieren, wenn es den URL konvertiert...
normalerweise sollte es funktionieren, wenn du in der .htaccess die RewriteBase und die RewriteRule folgendermaßen anpasst:

Code: Alles auswählen

RewriteBase /cms/cms/

RewriteRule ^(.*)/rocknroll,a,([0-9]+)\.4fb$ front_content.php?idcat=$2 [NC,QSA,L]

# oder alternativ auch möglich

RewriteBase /

RewriteRule ^(.*)/rocknroll,a,([0-9]+)\.4fb$ cms/cms/front_content.php?idcat=$2 [NC,QSA,L]
Laut deinem Post aus http://forum.contenido.org/viewtopic.ph ... 10#p128010 scheint das Problem nun behoben zu sein...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

birke
Beiträge: 92
Registriert: Mo 2. Feb 2009, 16:58
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von birke » So 15. Feb 2009, 08:53

Danke Dir noch für Deine Antwort. Ich dachte ich hänge es noch im Bereich Misc an meine Frage, falls dort jemand die Lösung sucht. Inzwischen funktioniert alles Bestens, auch wenn ich mein Contenido in einem Unterordner im root habe. :)

Grüße, Birke

birke
Beiträge: 92
Registriert: Mo 2. Feb 2009, 16:58
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von birke » So 15. Feb 2009, 12:50

Noch eine Frage zum mod_rewrite bei einem Strato-Server, den ich leider nutzen muss. In den Strato FAQ heißt es:
Bitte beachten Sie, dass wir "Directive RewriteOptions" nicht in ".htaccess"-Dateien anbieten und dass die maximale Tiefe fuer RewriteLoops auf 3 beschränkt ist.
Kann ich dann die SEO-URLs nicht wie hier beschrieben oder bei mir lokal auf einem Strato-Server verwenden? Wie soll ich das denn sonst machen, außer mit der .htaccess?

Gruß, Birke

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von xmurrix » So 15. Feb 2009, 13:22

birke hat geschrieben:...
Bitte beachten Sie, dass wir "Directive RewriteOptions" nicht in ".htaccess"-Dateien anbieten und dass die maximale Tiefe fuer RewriteLoops auf 3 beschränkt ist.
Kann ich dann die SEO-URLs nicht wie hier beschrieben oder bei mir lokal auf einem Strato-Server verwenden?...
Wenn der Provider das Setzen der RewriteOptions-Direktive unterbindet, hat das in der Regel keinen Einfluss auf das Umschreiben der URLs und das Apache mod rewrite Modul. Laut Doku kann man da die Werte "inherit" und "MaxRedirects=n" (n=Zahl) setzen und beides ist für das Funktionieren einer Contenido-Installation mit Clean-URLs nicht notwendig.

Dass die RewriteLoops auf 3 beschränkt sind, ist eher eine Sicherheitsmaßname. Bei falsch definierten Rewrite-Regeln kann Apache beim Umschreiben in einer Endlosschleife landen, das soll damit verhindert werden.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

birke
Beiträge: 92
Registriert: Mo 2. Feb 2009, 16:58
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von birke » So 15. Feb 2009, 13:26

Ja fein. Danke für die Erklärung, xmurrix. :)

Ich hatte es so verstanden, dass andere Methoden als eine .htaccess verwendet würden. Der URL wird auch richtig umgeschrieben. Läuft zwar noch ins Leere, doch das wird nur am Pfad in der .htaccess liegen.

Grüße, Birke

coentje
Beiträge: 2
Registriert: Mo 23. Jun 2008, 07:55
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von coentje » Di 17. Feb 2009, 18:02

Moin, moin!

Eine Frage hätte ich noch: Bei einem Update von 4.8.10 auf 4.8.11 wird der Mustermandat doch nicht aktualisiert, oder? Gibt es das neue Hauptnavigationsmodul irgendwie zu sehen ohne die bestehende Installation komplett über zu bügeln?

Oder anders gefragt:
Um das zu erreichen, sind die URLs in allen Modulausgaben und in Plugins per Hand anzupassen.
Gibt es dazu mehr Informationen? Ich konnte das bisher nirgends finden...

Hoffentlich bin ich nicht nur mit Blindheit geschlagen und jemand kann mich da mal in die richtige Richtung stupsen.

Liebe Grüße aus dem Norden,
Coentje

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von xmurrix » Di 17. Feb 2009, 18:51

Hallo Coentje,
coentje hat geschrieben:...
Eine Frage hätte ich noch: Bei einem Update von 4.8.10 auf 4.8.11 wird der Mustermandat doch nicht aktualisiert, oder? Gibt es das neue Hauptnavigationsmodul irgendwie zu sehen ohne die bestehende Installation komplett über zu bügeln?...
ein Update überschreibt nicht die Modulcodes, daher müsstest du eine separate Installation machen, um da ranzukommen.
coentje hat geschrieben:...Oder anders gefragt:
Um das zu erreichen, sind die URLs in allen Modulausgaben und in Plugins per Hand anzupassen.
Gibt es dazu mehr Informationen? Ich konnte das bisher nirgends finden...
Die Navi-Module und das Sitemap-Modul beim Contenido-Beispielmandanten generiert meines Wissens die URLs mit Hilfe des UrlBuilders. Das Modul für Hauptnavigation erstellt die Url folgendermaßen zusammen, falls der UrlBulder nicht 'front_content' ist:

Code: Alles auswählen

$aParams = array('a' => $oCategory->getIdCat(), 
                 'idcat' => $oCategory->getIdCat(), // needed to build category path
                 'lang' => $iLang, // needed to build category path
                 'level' => 1); // needed to build category path
...
$oTpl->set('d', 'url', Contenido_Url::getInstance()->build($aParams));
Den Code findest du in Contenido 4.8.11 im Mandatenverzeichnis unter cms/includes/Util/Modules/Contenido_NavMain_Util.class.php, ab Zeile 61.

Im allgemeinen können URLs zu Frontendseiten nach folgendem Schema generiert werden:

Code: Alles auswählen

// mit idcat
$aParams = array ('idcat' => $idcat, 'lang' => $lang);
$url = Contenido_Url::getInstance()->build($aParams);

// oder mit idart
$aParams = array ('idart' => $idcat, 'lang' => $lang);
$url = Contenido_Url::getInstance()->build($aParams);
Die Parameter werden als assoziatives Array an den UrlBuilder übergeben. Je nach verwendetem UrlBuilder können die Parameter anders sein.

Module und Plugins verwenden gewöhnlicherweise dieses neue Feature noch nicht, dort werden URLs noch alá 'front_content.php?idcat=123&lang=1&client=2' ausgegeben. Die Ausgabe dieser URLs ist auf die Verwendung des UrlBuilders umzustellen. Das sollte ansich kein Problem sein. Etwas aufwändiger wird es bei den URLs, die über den wysiwyg-Editor eingefügt werden. Die enthalten dann weiterhin URLs mit 'front_content.php...'. Diese URLs könnten beim Speichern der Seite umgestellt werden, oder "on the fly" bei der Ausgabe der Seite.

Die UrlBuilder sind noch eine frische Angelegenheit, arbeiten kann man damit nach ein paar Anpassungen an Modulen/Plugins auf jeden Fall.

Wenn du dir das aber Sparen willst, kannst du dir auch das AMR-Plugin ansehen. Das Plugin generiert auch Clean-URLs, verwendet die UrlBuilder-Funktionaliät und eine Anpassung der Module/Plugins ist auch nicht nötig, da die URLs bei der Ausgabe der Seite umschrieben werden.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

coentje
Beiträge: 2
Registriert: Mo 23. Jun 2008, 07:55
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von coentje » Mi 18. Feb 2009, 05:33

Guten Morgen xmurrix!

Vielen Dank für die ausführliche Erklärung. Werde mich in den nächsten Stunden gleich mal daran versuchen.

Grüße, Coentje

die12monate
Beiträge: 2
Registriert: Mi 11. Mär 2009, 17:28
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von die12monate » Mi 11. Mär 2009, 18:02

Hallo,

ich habe gerade bei unserer Firmenpräsentation testweise die clean urls aktiviert.
Etwas unschön ist, dass in den Links der Navigation_Meta der Name des Kategoriebaumes mit auftaucht.

Kann man das irgendwie ändern?

Bei den Links der Navigation_Main ist dies nicht der Fall.

Zum Vergleich hier mal 2 Links:
Navigation_Meta: http://die12monate.de/die12monate/cms/Metanavigation/Startseite/index-a-2.html
Navigation_Main: http://die12monate.de/die12monate/cms/F ... x-a-7.html

Die eingesetzte Contenido Version ist 4.8.11

Vielen Dank.
Gruß
Daniel Trautmann

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von xmurrix » Mi 11. Mär 2009, 22:46

Hallo,
die12monate hat geschrieben:...
ich habe gerade bei unserer Firmenpräsentation testweise die clean urls aktiviert.
Etwas unschön ist, dass in den Links der Navigation_Meta der Name des Kategoriebaumes mit auftaucht.

Kann man das irgendwie ändern?...
das lässt sich konfigurieren. Dazu brauchst du in der Modulausgabe den Codeblock

Code: Alles auswählen

$aParams = array('a' => $oContenidoCategory->getIdCat(), 
                'idcat' => $oContenidoCategory->getIdCat(), // needed to build category path
                'lang' => $lang, // needed to build category path
                'level' => 0); // needed to build category path
gegen

Code: Alles auswählen

$aParams = array('a' => $oContenidoCategory->getIdCat(), 
                'idcat' => $oContenidoCategory->getIdCat(), // needed to build category path
                'lang' => $lang, // needed to build category path
                'level' => 1); // needed to build category path
ändern.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

chpulat
Beiträge: 27
Registriert: Di 3. Mär 2009, 15:32
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von chpulat » Do 12. Mär 2009, 09:53

Hallo

ich hab ein Problem. Bei meinem aktuellen Projekt soll ich eine Webseite von Contenido 4.2 auf 4.8.11 portieren. (naja neuaufsetzten liegt näher)

Dazu wollte ich die zusätzlich die mitlerweile unterstützten "schöneren URL's" aktivieren, oder vllt sogar auf das Xmurrix plugin umsteigen(das hatte ich ja leider nicht zum laufen bekommen, aber das ist hier nicht thema)

Jetzt habe ich das ganze mal auf den 1und1 Server hochgeladen wollte grade wie im HowTo angegeben aktivieren und tada --> geht nix :-(

Dan hab ich per

Code: Alles auswählen

RewriteEngine on
RewriteRule ^ http://www.contenido.org [R,L]
getestet ob mod rewrite aktiviert von serverseite aus aber es kommt keine Weiterleitung auf contenido.org :-(

was mache ich nun? wie sagt ich 1und1, dass sie doof sind oder mod_rewrite mal aktivieren sollen.

chpulat
Beiträge: 27
Registriert: Di 3. Mär 2009, 15:32
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von chpulat » Do 12. Mär 2009, 10:38

So, mein Projekt (portiere contenido 4.2 auf 4.8.11) geht jetzt online.

Alles hochgeladen installiert, und content eingefügt. Jetzt wollte ich mit Boardmitteln versuchen, halbwegs schöne URL's zu generieren.

Aber es läuft nicht. Er kann meine urls leider nicht auflösen und entsprechend an die frontcontent übergeben. Ich denke es liegt an der .htaccess und dem hoster 1und1

kann mit jemand helfen?

zur Installation das ganze liegt unter domain.de/neu/ (also der standartmandant unter domain.de/neu/cms/frontcontent.php)
meine htaccess, frage dazu welche rewritebase wählen?

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 /neu/

    # 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 ^(.*)/index,a,([0-9]+)\.html$ /cms/front_content.php?idcat=$2 [NC,QSA,L]

    </IfModule>
vielen Dank

die12monate
Beiträge: 2
Registriert: Mi 11. Mär 2009, 17:28
Kontaktdaten:

Re: Aktivierung der Erstellung von SEO-URLs

Beitrag von die12monate » Do 12. Mär 2009, 14:34

Vielen Dank!
Hat funktioniert.

Gruß
Daniel Trautmann

Gesperrt