Advanced Mod Rewrite ändert URLs und Anker in Newsletter

Gesperrt
Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

Advanced Mod Rewrite ändert URLs und Anker in Newsletter

Beitrag von Phiga »

Hallo Mitkämpfer,

ich wundere mich derzeit über zwei Phänomene, die vermutlich technisch zusammen hängen und zu denen ich im Forum nichts finden konnte (was wiederum möglicherweise mit der neuen Suche zu tun hat):

1.) Seit dem Einbau des Plugin Advanced Mod Rewrite werden in meinem Contenido (4.8.11 mit Advanced Mod Rewrite Version 0.5.3) alle (und soweit ich erkennen kann _nur_) URLs im <a>-Tag, die "front_content.php" in einem versendeten Newsletter enthalten, zu lesbaren aber _relativen_ URLs verstümmelt.
(Mandanteneinstellungen: remove_base_tag ist "true" und es wird auch tatsächlich kein <base>-Tag eingefügt.)

Beispiel:
Aus

Code: Alles auswählen

<a href="http://www.domain.tld/cms/front_content.php?idcat=79">
im Artikel wird nach dessen Versand in der E-Mail

Code: Alles auswählen

<a href="/de/kategroie-a/kategroie-b/index.html">
und funktioniert dort natürlich nicht.

Meine derzeitige Lösung (Workaround) ist, direkt die lesbaren URLs in den zu versendenden Artikel einzufügen, also:

Code: Alles auswählen

<a href="http://www.domain.tld/de/kategroie-a/kategroie-b/index.html">
Das funktioniert zwar, aber eben nur so lange, solange der Autor den Kategorienamen und Artikelnamen nicht ändert (wohingegen http://www.domain.tld/cms/front_content.php?idcat=79 in jedem Fall funktionieren würde. Und ja, Autoren machen so etwas ;-)).


2.) Relative Anker (Sprungmarken) in Links funktionieren in der Newsletter-E-Mail nur, wenn deren Länge 3 Zeichen nicht überschreitet.

Beispiel, funktioniert nicht:

Code: Alles auswählen

<a href="#kap1">Kapitel 1</a>
…
<a name="kap1"></a>
<h2>Kapitel 1</h2>
wird in der E-Mail zu

Code: Alles auswählen

<a href="http://www.domain.tld/cms/#kap1">Kapitel 1</a>
…
<a name="kap1"></a>
<h2>Kapitel 1</h2>
Dieser Link dagegen funktioniert einwandfrei:

Code: Alles auswählen

<a href="#a1">Kapitel 1</a>
…
<a name="a1"></a>
<h2>Kapitel 1</h2>
In diesem Fall ist die Lösung natürlich, einfach keine Ankernamen mit mehr als 3 Zeichen zu verwenden :-)
Längere wären aber aufschlussreicher und wünschenswert.

Wenn mir jemand bessere Lösungen nennen, oder sogar das Plugin bzw. das Modul reparieren kann, würde ich mich sehr freuen.

Vielen Dank im Voraus
Phiga
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Advanced Mod Rewrite ändert URLs und Anker in Newsletter

Beitrag von xmurrix »

Hallo Phiga,

sorry für die späte Antwort, ging nicht vorher...

Ich habe mich bisher mit Newsletter versenden nicht beschäftigt, daher kenne ich das von dir beschriebene Verhalten nicht. Falls es sich um einen Artikel handelt, der per Newsletter versendet wird, kann das Ergebnis natürlich je nach Verwendung und Einstellungen anders aussehen.

Wird ein Artikel ausgegeben, kann das System nicht wissen, dass es die URLs als absolute URLs inkl. Protokoll und Host ausgeben soll. Das ist nicht ein AMR-spezifisches Verhalten, sondern ein allgemein zu lösendes Problem.

Dass Redakteure gerne die Struktur der Seiten ändern (Artikelname, Kategoriename, usw.), ist allgemein bekannt, daher kann es vorkommen, dass vorher gültige Clean-URLs auf einmal nicht mehr gefunden werden. Dann ist klar, dass sowas wie http://www.domain.tld/de/kategroie-a/ka ... index.html dann nicht mehr gefunden wird. Die Lösung ist, wie du beschrieben hast, nur mit Angaben wie http://www.domain.tld/cms/front_content.php?idcat=79 möglich. Damit ist eine Seite eindeutig referenziert, auch wenn sich die Artikel-/Kategoriename nachträglich ändern. Solche URLs sind DAU-Sicher werden auch vom AMR-Plugin durchgelassen, sofern die richtigen Einstellungen gesetzt sind.

Wenn das Verhalten der URL-Generierung sich bei bestimmten Seiten unterscheiden soll, ist eine globale Lösung erstrebenswert, also eine Lösung die in den Contenido-Core integriert wird. Dann ist auch sichergestellt, dass alle UrlBuilder, die auf den Contenido-UrlBuilder basieren, sich so verhalten, wie es sich gehört. Ich kann mir da vorstellen, dass man z. B. eine zusätzliche Einstellung definieren kann, mit der kontolliert wird, dass alle URLs absolut inkl. Protolokk u. Host ausgegeben werden.

Code: Alles auswählen

Typ           Name                        Wert
url_builder   generate_absolute_urls_for  12,24
wobei der Wert eine kommaseparierte Liste von Artikelids enthält, bei denen die absoluten URLs generiert werden sollen.

Eine weitere technische Möglichkeit wäre die Implementierung einer eigenen Chain-Funktion für die Chain 'Contenido.Frontend.PostprocessUrlBuilding'. Dann hat man die Möglichkeit die URL anzupassen, bevor sie zurückgeliefert wird. Die Möglichkeit, auf die Esrtellung von URLs "einzugreifen" ist gegeben - neben der oben genannten Chain gibt es auch die Chain "Contenido.Frontend.PreprocessUrlBuilding", mit der man vor dem URLBuilder was machen kann.

Das Problem, dass das AMR-Plugin die URLs zerstört kann ich nicht nachvollziehen. Natürlich weiß ich nicht, in welchem Kontext das bei dir verarbeitet wird, aber folgendes solltest du auch mal prüfen:
- Im wysiwyg-Editor angegebene absolute URLs könnten nicht 100% übernommen werden
- Beim FCK-Editor hatte ich mal das Problem, dass angegebene Anker, die länger als 3 Zeichen waren, vom FCK-Editor abgeschnitten wurden.
Kannst du die beiden Punkte auch sicher ausschließen?

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.
Phiga
Beiträge: 23
Registriert: Mi 3. Mai 2006, 09:16
Wohnort: Bonn
Kontaktdaten:

Re: Advanced Mod Rewrite ändert URLs und Anker in Newsletter

Beitrag von Phiga »

Guten Morgen xmurrix,

gemessen daran, dass mein Problem vermutlich etwas exotisch ist und ich Dank der gefundenen Workarounds keinen Zeitdruck habe, war Deine Antwort mehr als pünktlich! Vielen Dank also für die schnelle Reaktion und die ausführliche Erklärung!!

Im Punkt 1.) muss ich also auf die Core-Entwicklung warten oder sie ggf. selbst vorantreiben.

Im Punkt 2.) kann ich vermutlich sowohl den FCK- als auch den WYSIWYG-Editor (den ich nach einer Neuinstallation für meinen Account immer als erstes abschalte) ausschließen, denn bei meinen Versuchen habe ich ausschließlich den HTML-Editor benutzt. Es ist ja auch merkwürdigerweise so, dass die Ankerreferenz nicht einfach nach dem dritten Zeichen abgeschnitten wird, sondern (trotz fehlendem BASE-Tags) um ein eingefügtes "http://www.domain.tld/cms/" verlängert wird.

Der nächste zu versendende Newsletter kommt bestimmt. Ich werde versuchen, dabei das Problem noch weiter einzugrenzen.

Viele Grüße
Phiga
Gesperrt