AMR Modul gibt bei Fehlerseite keinen 404 Header aus

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

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Faar » Do 14. Nov 2013, 15:29

Das könnte gehen, glaube ich, aber du bietest damit Hackern einen Angriffspunkt, indem sie nur die Servervariable $_SERVER['HTTP_HOST'] überschreiben und an diese Fehlerseitenabfrage senden müssen.
Wie würde die URL wohl aus sehen, wenn der Hacker $_SERVER['HTTP_HOST'] = 'fishingpage.tld' an dein Programm sendet und bei sich einen Pfad namens /deutsch/fehlerseite/fehlerseite.html eingerichtet hat ?
Nimm lieber die Contenido System-Variablen für den Pfad:
http://www.contenido-wiki.org/wiki/inde ... mvariablen
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von xmurrix » Do 14. Nov 2013, 16:29

Hallo lunsen_de,
lunsen_de hat geschrieben:...Eine Sache habe ich noch in der front_content_controller.php geändert, damit bei Fehler in der Sprache oder Mandant nicht dir statische 404.html sondern auch die Fehlerseite gezeigt wird....
Aber das ist ja dann nicht möglich, wenn man nun Stikt sein will. Da es ja einen Fehler beim Ermitteln der Sprache oder des Mandanten gab, kommt es laut der aktuellen Logik im Script daher, dass jemand eine z. B. URL wie

Code: Alles auswählen

http://www.meinedomain.de/deut/fehlerseite/fehlerseite.html
aufgerufen hat und richtig sollte es folgendermaßen sein:

Code: Alles auswählen

http://www.meinedomain.de/deutsch/fehlerseite/fehlerseite.html
Jest stehts du vor dem selben Problem, über den wir uns hier in mittlerweile fast 4 Seiten unterhalten. Die URL soll als Prefix die Sprache "/deutsch/" enthalten, Ausnahme ist wohl die URL zum Root "/" oder auch URLs mit "...front_content.php...". Nun kommt da eine URL "/deut/" als Prefix an und "deut" ist keine Sprache. Das ist ein klassischer Fehler und du möchtest nun die deutsche Fehlerseite ausgeben, obwohl die Sprache nicht ermittelt werden konnte, die URL also falsch ist. Vielleicht wollte der User eine englische Seite besuchen und die ganze URL zeigt auf die englische Seite, nur dass vorne ein Vertipper in der Sprache ist.

Warum machst du die Ausnahme dann für die Sprache oder den Mandanten?

Bei einem einzigen Mandanten kann man die ID des Mandanten mal ignorieren. Das wird aber bei einem Mehrmandantensystem auch nicht funktionieren. Da kannst du nicht einfach einen "default" Mandanten laden, das wäre fatal...

Wie du siehst, gibt es verschiedene Anforderungen, jeder hat da seine eigene Vorstellung davon was richtig ist oder nicht. Genau aus diesem Grund wird das AMR-Plugin, wie auch allen anderen Module und Plugins hier im Forum, nie allen Wünschen gerecht sein. Sehe es als eine Vorlage an der du etwas Feintuning machen kannst, auf die Gefahr hin, dass ein Update wegen geänderter Sourcen dann schwieriger wird.

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.

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von lunsen_de » Do 14. Nov 2013, 17:18

Hallo,

xmurrix Danke für den Anstoss. Jetzt habe ich es verstanden. Den Ansatz den du beschrieben hast, habe ich völlig außer Acht gelassen.
Ich werde jetzt ein Statische 404.html machen, die mehreren Mandanten als auch Sprachen bei Schreibfehlern in Sprache und Mandant gerecht wird.

Faar Ich habe den Eintrag wieder herausgenommen. Leider sind meine PHP-Kenntnisse nicht gut genug, um solche Lücken zu sehen und richtig anzupassen/ zu schliessen.

Gruß lunsen_de

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von lunsen_de » Mo 18. Nov 2013, 12:22

Hallo, ich muss jetzt nochmal eine Frage zum AMR Plugin stellen, bezüglich eines Verhaltens (früher/jetzt). Vielleicht liegt es auch an den Änderungen, aber mit dem 0.6.0 (nicht modifiziert) ist es auch nicht anders.

Zur Erklärung: ich will Alles hier besprochene nicht rückgängig machen, aber bei manchen Kunde evtl. etwas anders herangehen und schon indizierte Seiten (index.html) vielleicht mit einem canonical Tag vershen.

Bei den älteren Systemen ist es so (4.8.15 AMR 0.5.5):
Artikelname an URLs anhängen: aktiviert, Standardname: index.html, Duplicated Content verhindern:aktiviert
Ich kann im Frontend beide Dateiendungen aufrufen: unternehmen.html UND index.html

Jetzt 4.8.18, AMR 0.6.0:
Artikelname an URLs anhängen: aktiviert, Standardname: index.html, Duplicated Content verhindern:aktiviert
Ich bekommen (bei index.html) immer die Fehlerseite angezeigt, es geht nur unternehmen.html, ich muss also Standardname UNBEDINGT freilassen, sonst führt die Navi immer zur Fehlerseite.


Wenn ich also beide URLs verwenden will, muss ich Standardname: index.html, Duplicated Content verhindern:deaktivieren.

Ist das so korrekt?

Gruß lunsen_de

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

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von xmurrix » Di 19. Nov 2013, 08:32

Guten Morgen lunsen_de,

das AMR-Plugin hat früher die Option "Duplicated Content verhindern" nur teilweise erfüllt. Kurz zu Vorgeschichte dieser Option. Es ist möglich, im AMR-Plugin die Hauptnavigation der URL voranzustellen. Diese Einstellung hat für Duplicated Content gesorgt, da mann die Seiten mit und ohne vorangestellter Hauptnavigation, aufrufen konnte. Um das Problem zu lösen kam dann die Option "Duplicated Content" hinzu, und diese Option hat sehr lange nur mit aktivierter Option "Hauptnavigation der URL voranzustellen" gewirkt. Bis zur Version AMR 0.5.5 war das so.

In der neuen version AMR 0.6.0 ist das anders, hier wird die Prüfung auf Duplicated Content unabhängig von der Option "Hauptnavigation der URL voranzustellen" ausgeführt.

Das AMR-Plugin geht also in der Version 0.6.0 strikter/richtiger mit der Option "Duplicated Content" um, dafür ist es nicht abwärtskompatibel.

Willst du nun alte schon indizierte Seiten dennoch durchlassen, so solltest du die Option "Duplicated Content verhindern" deaktivieren.

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.

akku
Beiträge: 1
Registriert: Di 15. Apr 2014, 16:22
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von akku » Di 15. Apr 2014, 17:07

xmurrix hat geschrieben:Der Code in deinem Beispiel ist auch in der überarbeiteten Version des AMR-Plugins, den ich dir gestern angepast habe.
http://purc.de/temp/plugin_advanced_mod ... 04_mod.zip
Warum das bei dir nicht geht, kann ich nicht sagen.
...Er springt jetzt halt nicht mehr in der Adresszeile um. Ist eine Kombination der beiden Codeteile möglich?
Nein, das ist nicht ratsam, die 404 sollte auf der Seite ausgegeben werden, in der auch das Problem aufgetreten ist. Eine Weiterleitung auf die Fehlerseite mit der Ausgabe von 404 ware nicht richtig, da die Fehlerseite selber ja korrekt ist.
...Ist das für SEO relevant, ob die Adresszeile umspringt, oder ist das somit eine SAUBERE Lösung?...
Ja, es ist SEO relevant. Nur die URL, zur der die Seite nicht gefunden wurde, sollte 404 ausgeben. Eine Ausgabe von 404 mit einer nachfolgenden Weiterleitung ist nicht ratsam, da die Weiterleitung vermutlich den vorherigen 404 Header ungültig macht.

Gruß
xmurrix
Hallo xmurrix,

ich habe aus SEO-Gründen deinen 404-Fix Variante des MR Plugins 0.6.0 installiert. Jetzt werden die nicht vorhandenen Seiten korrekt mit 404 ausgegeben und nicht mehr mit 302 auf die in Contenido hinterlegte Fehlerseite redirected. Soweit, so gut.
Mein Problem ist jetzt allerdings, dass Google Webmastertools meckert und bestimmte indexierte URLs nicht mehr gefunden werden und die 404.html angezeigt wird.

Beispiel:
http://www.dr-buchert.de/cms/front_content.php?idart=16 wurde mit 0.6.0 (Standard) vorher korrekt redirected auf http://www.dr-buchert.de/de/front_content.php?idart=16, so dass ich wenigstens den Content sehen konnte.
Mit 0.6.0-404 wird für http://www.dr-buchert.de/cms/front_content.php?idart=16 einfach die 404.html angezeigt. :/

Eigentlich wollte ich in der HTACCESS mit folgenden Eintrag auf die "richtige" URL redirecten. Da greifen jedoch die RewriteRules und machen mir einen Strich durch die Rechnung. Das war sowohl bei der 0.6.0 als auch bei der 0.6.0-404 der Fall.

Code: Alles auswählen

RedirectMatch 301 /cms/front_content.php?idart=16 http://www.dr-buchert.de/de/lexikon/hinweisgeber-whistleblowing.html
Hat du einen Tipp für mich?

Meine Einstellungen lauten:
Bild

Viele Grüße,
akku

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

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von xmurrix » So 11. Mai 2014, 11:19

Hallo akku,

willkommen im CONTENIDO Forum.

Das AMR-Plugin macht selber keine Weiterleitungen von alten URLs zu neuen URLs. Das vorhandene Routing ist nur ein internes Routing, es macht keine Weiterleitung mit der header-Direktive, gibt nur eine andere gewünschte Zielseite aus.

Dein Ansatz mit dem Redirect in der .htaccess war schon richtig, aber du musst dafür sorgen, dass die Regel dann bei einem Redirect auch als letztes ausgeführt wird. Wenn nicht arbeitet Apache die nachfolgenden Regeln, die die vorherigen "überschreiben".

Bei der RewriteRule Direktive gibt es den Flag L, die sorgt dafür dass nachfolgende Rewrite-Regeln bei einem Treffer nicht mehr verarbeitet werden.

Code: Alles auswählen

RewriteRule /cms/front_content.php?idart=16 /de/lexikon/hinweisgeber-whistleblowing.html [L]
Vielleicht kannst du das als Flag für deine RedirectMatch verwenden, bin mir da aber nicht sicher, probiere es also aus.

Es kann aber auch daran liegen, dass deine Regel in der .htaccess gar nicht greift, oder eine andere Regel, die vorher definiert wurde, zuerst abgearbeitet wird.

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.

Gesperrt