Url-Rewriting: flachere Url-Struktur

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Url-Rewriting: flachere Url-Struktur

Beitrag von Bernbacher » Mi 19. Aug 2015, 14:49

Hallo,
ein Kunde wünscht aus SEO-Gründen eine flachere Navigationsstruktur, so zum Bsp. die erste Ebene (hier "support" entfernen):
ist: http://www.meineDomain.de/support/faq/
soll: http://www.meineDomain.de/faq/

und

ist: http://www.meineDomain.de/support/faq/frage1.html
soll: http://www.meineDomain.de/faq/frage1.html

Ist das in Contenido möglich? Man muss natürlich hier davon ausgehen das "faq" nur einmal in der zweiten Ebene vorkommt.
Die Kategorie "support" brauche ich aber einerseits im Backend um eine saubere Struktur zu haben und zum anderen für den Aufbau der Navigation, denn da soll "faq" in der zweiten Ebene unter "support" erscheinen.

Wäre für jede Idee dankbar.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Url-Rewriting: flachere Url-Struktur

Beitrag von Faar » Mi 19. Aug 2015, 19:15

In Contenido ist vieles möglich.

Ich hatte das bei einem Kunden mal so gelöst, dass die SEO Links mittels Routing im AMR auf die richtigen Links geleitet werden.
So kann man das intern machen und muss nicht die htaccess bemühen.
http://forum.contenido.org/viewtopic.php?f=60&t=32705
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: Url-Rewriting: flachere Url-Struktur

Beitrag von Bernbacher » Fr 4. Sep 2015, 13:03

Also eine elegante Lösung habe ich nicht gefunden, da jeder einzelne Link an zwei Stellen umgeschrieben werden muss, aber scheint zu mindest zu funktionieren:

ist: http://domain.de/produkt-gruppe/produkt1.html
soll: http://domain.de/produkt1

ist: http://domain.de/ober-produkt-gruppe/produkt-gruppe/produkt2.html
soll: http://domain.de/produkt2

1. Contenido Backend: Extras > AMR:
a. Unter Artikelname an URLs anhängen die Checkbox Artikelname immer an die URLs anhängen (auch bei URLs zu Kategorien) auswählen.
b. Das Feld Standard-Artikelname ohne Dateiendung leer lassen.
c. Bei Dateiendung am Ende der URL die Endung .html angeben.
d. Unter Routing die Routing Definitionen für alle eingehende URLs angeben, z.B.:

Code: Alles auswählen

/produkt1>>>/cms/front_content.php?idart=4
/produkt2>>>/cms/front_content.php?idart=5
[/b]

2. Ausgehende URLs: contenido/classes/uri/class.uribuilder.mr.php:
Vor dem schließenden return der Methode _buildUrl (ca. Zeile 225)
Die Kategorien durch ein String-Replace ersetzen:

Code: Alles auswählen

$sUrl = str_replace('/produkt-gruppe/', '/', $sUrl);
$sUrl = str_replace('/ober-produkt-gruppe/', '/', $sUrl);
$sUrl = str_replace('.html', '', $sUrl);
[/b]

Wie gesagt, nicht elegant, aber funktioniert vorerst...

Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: Url-Rewriting: flachere Url-Struktur

Beitrag von Bernbacher » Di 14. Nov 2017, 17:38

Hallo,

ich nochmal. Leider komme ich immer noch nicht mit dem Kürzen der URLs im Contenido klar :( , die immer mehr Kunden (aus SEO-Gründen zurecht) fordern.
Ich habe im Contenido immer noch keine Lsg. gefunden, mit der ich eingehende und ausgehende URLs kürzen kann.
Eingehende URLs kann ich über das AMR-Routing kürzen, z.B.:

Code: Alles auswählen

/produktgruppe>>>front_content.php?idcat=2
/produkt1>>>front_content.php?idart=16
D.h. URLs in der Browserzeile verlinken auf den jeweiligen normalen Artikel oder die Kategorie (also auf den Startartikel). Das für sich funktioniert.

Aber ich muss natürlich ja auch noch die ausgehenden URLs anpassen, das mache ich bisher in der Funktion _builUrl in der Datei
html-data/contenido/classes/uri/class.uribuilder.mr.php indem ich vor dem Return so was schreibe wie:

Code: Alles auswählen

$aRemove = [
	// URL aus Contenido			gewünschte SEO Kurzform
	['/produktgruppe/produkt.html',		'/produkt'],
	['/produktgruppe/produkt1.html',	'/produkt1']
];
foreach($aRemove as $item) $sUrl = str_replace($item[0], $item[1], $sUrl);
Das funktioniert noch alles soweit bei Startartikeln (eingehend und ausgehend), aber eingehende normale Artikel funktionieren damit nicht mehr.
Abgesehen, dass das wahrscheinlich nicht elegant ist und wahnsinnig umständlich für jeden neuen Artikel an zwei Stellen zu pflegen (an die schon gar nicht der Redakteur eigentlich ran soll).
Wie macht ihr das in Euren Projekten? Kurze URLs das ist doch kein Sonderwunsch mehr bei den Kunden, oder?
Wäre für jeden Tipp, Hinweis dankbar!

Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: Url-Rewriting: flachere Url-Struktur

Beitrag von Bernbacher » Mi 7. Mär 2018, 11:49

Aber: Noch ein seltsames Verhalten: der Alias darf nicht genauso heißen wie die Kurzschreibweise - warum auch immer :shock:

Alles in allem: für Projekte mit vielen Seiten und URL-Umschreibung werden werden wir Contenido wohl nicht weiter verwenden :( : der Aufwand die Kurz-Urls umständlich an zwei Stellen (und eine davon nicht erreichbar für den Redakteur) zu pflegen und den Alias extra anders zu benennen ist einfach zu hoch.
Elegant wäre es, wenn man in den Artikeleigenschaften einfach eine Kurz-Url angeben könnte, die dann das AMR verwendet.
Zuletzt geändert von Bernbacher am Mi 7. Mär 2018, 16:36, insgesamt 1-mal geändert.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Url-Rewriting: flachere Url-Struktur

Beitrag von Faar » Mi 7. Mär 2018, 15:58

Bernbacher hat geschrieben:
Mi 7. Mär 2018, 11:49
Aber: Noch ein seltsames Verhalten: der Alias darf nicht genauso heißen wie die Kurzschreibweise - warum auch immer :shock:
Der Alias wird sowohl für das Menü (Kategorie-Alias) vom Menümodul als auch die "sprechende URL" (Kategorie- und Artikel-Alias) vom AMR benützt.
Das AMR "sucht" anhand der Aliasnamen nach den Artikeln und Kategorien.
Wenn dann nun jemand auf die Idee käme, diese Alias auch noch für etwas anderes zu benützen, dann findet das AMR nichts mehr.
Daher findet man oft auch in einer Kurzschreibweise noch eine eindeutige ID hinten angehängt, weil sich irgendwann mal die Variation von Aliasnamen erschöpft.
Besonders bei vielen Seiten.
Alles in allem: für Projekte mit vielen Seiten und URL-Umschreibung werden werden wir Contenido wohl nicht weiter verwenden :( : der Aufwand die Kurz-Urls umständlich an zwei Stellen (und eine davon nicht erreichbar für den Redakteur) zu pflegen und den Alias extra anders zu benennen ist einfach zu hoch.
Aus meiner SEO Zeit weiß ich, dass sehr wohl ein gewaltiger Aufwand betrieben wurde und wird, um Kurzlinks zu pflegen.
Meistens geschah das in einer .htaccess
Elegant wäre es, wenn man in den Artikeleigenschaften einfach eine Kurz-Url angeben könnte, die dann das AMR verwendet.
Wer möchte, kann sich seinen eigenen URL-Builder bauen oder das AMR aufbohren.

Die Logik ist klar:
Woher weiss so ein URL-Builder, dass domain.tld/produkt ein Kurzlink ist und kein Pfad zu einer Kategorie, die den dortigen Startartikel aufruft?
Wir hatten vor längerer Zeit mal die Diskussion, dass das AMR zwischen /produkt und /produkt/ unterscheiden können sollte, aber warum, wenn das international schon geregelt ist?
Das AMR sucht zuerst in den Kategorie-Alias und dann in den Artikel-Alias. Bei Deiner Vorstellung der Sache müsste es noch eine extra Datenbank-Tabelle mit den SEO-Kurzlinks geben, die zuerst durchsucht werden, ob sich dort nicht "produkt" befindet.
Logischerweise müsste diese Tabelle auch mit den Alias-Tabellen von Kategorie und Artikel abgeglichen werden, damit es keine mehrfache Auswahl gibt.

Warum?
Würde das AMR in der SEO-Tabelle "produkt" finden, würde es nicht mehr eine Kategorie namens "produkt" finden und auch keinen Artikel der so heißt.
Eindeutiger wäre das zu handhaben, wenn man z.B. die idcatart an "produkt" anhängt, z.B. so: /produkt-278
Damit wäre der Name "produkt" fast überflüssig, weil mit der idcatart eindeutig eine Kategorie und ein zugehöriger Artikel bestimmt werden könnte. Lediglich die Sprache wäre nicht eindeutig bestimmbar. Hier könnte als Hilfsmittel noch das Wort "produkt" als Hinweis auf die Sprache genommen werden.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: Url-Rewriting: flachere Url-Struktur

Beitrag von Bernbacher » Mi 7. Mär 2018, 16:58

Danke Faar für Deine schnelle und ausführliche Antwort.
Der Alias wird sowohl für das Menü (Kategorie-Alias) vom Menümodul als auch die "sprechende URL" (Kategorie- und Artikel-Alias) vom AMR benützt.
Das AMR "sucht" anhand der Aliasnamen nach den Artikeln und Kategorien.
Und wenn man davor direkt davor in einer eigenen Tabelle suchen würde, ob ein Eintrag mit diesem Alias vorhanden ist? Wenn ja, dann soll er eben nicht nach Kategorie und Alias suchen, sondern dorthin gehen was entsprechend in der neuen Tabelle angegeben ist.
Wo ist denn diese Stelle im AMR zu finden?
Das fände ich zumindest noch eleganter als aktuell für einen Kurzlink das Routing im AMR und die Klasse class.uribuilder.mr.php anpassen zu müssen.
Und vor allem erhoffe ich mir davon, dass ich nicht nur auf Kategorien, sondern auch auf einzelne Artikel einen Kurzlink setzen könnte.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Url-Rewriting: flachere Url-Struktur

Beitrag von Faar » Do 8. Mär 2018, 10:42

Ich glaube mich zu erinner, es gab scheints mal den Ansatz, das AMR entsprechend zu erweitern aber das wurde dann nie verwirklicht.
Um zu verstehen wie das AMR arbeitet, muss man sich mal intensiv damit beschäftigen und prinzipiell auch mit dem Thema URL-Building.
Wo die Stellen zu finden wären, um es entsprechen anzupassen, weiß ich auch nicht.
Ich habe das AMR nicht gemacht, ich habe es mir nur mal gründlicher angeschaut und das war noch zu 4.8 Zeiten.
Da muss sich wohl jeder selbst einarbeiten.

Mit dem AMR alleine ist es ja nicht getan, es braucht die Tabelle und es braucht vor allen Dingen ein Eingabefeld bei den Artikel-SEO Eigenschaften.
Wobei hier ja schon das Feld für einen Alias steht. Hast Du Dir das schon mal angeschaut?
Dort gibt es auch das Feld für "Short-URL", was im Prinzip genau Deinen Wunsch widerspiegelt, so wie ich das verstanden habe.
Hast Du das Plugin "URL-Shortener" mal installiert und angeschaut?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Antworten