Fehlermeldung: Error: Reason

Armin Bartsch, Mittwoch, 11. März 2009

Auf eine eigene Fehlermeldungs-Seite umleiten, um die Meldung "Error: Reason..." zu umgehen

Das Umbennen, das Verschieben oder das Löschen von Seiten führt zu Fehlermeldungen, mit denen der Besucher und auch Spider nicht viel anfangen können. realurl bietet drei Möglichkeiten eine Fehlerbehandlung durchzuführen. In Kombination mit der Konfigurationsmöglichkeit der Fehlerbehandlung im Install-Toll pageNotFound_handling können individuelle Fehlerausgaben erzeugt werden.

Fehlerbehandlung in realurl

realurl bietet drei Möglichkeiten der Fehlerbehandlung, die mit dem key postVarSet_failureMode bestimmt werden.

blank value

Die Standardeinstellung ist blank value ('postVarSet_failureMode' => '',). Es wird die Einstellung von "pageNotFound_handling" aus dem Install-Tool zur Fehlerbehandlung genommen.
Die Standard-Fehlermeldung lautet: Reason: Segment "geteiltes-menue" was not a keyword for a postVarSet as expected!

Soll eine Fehlerseite eingeblendet werden, gibt man bei "pageNotFound_handling" im Install-Toll die Adresse der Fehlerseite an und in der ext_localconf.php für realurl im init:

'postVarSet_failureMode' => '',
'postVarSet_failureMode' => '',

ignore

ignore gibt eine Fehlermeldung aus, die dem Benutzer mitteilt, welcher Pfad "evtl." aufrufbar ist. 
Die Fehlermeldung lautet: Reason: "snippets/menues/geteiltes-menue.html" could not be found, closest page matching is snippets/menues/

Allerdings ist nicht sichergestellt, dass der vorgeschlagene Pfad auch wirklich zu erreichen ist.

redirect_goodUpperDir

redirect_goodUpperDir gibt keine Fehlermeldung aus, sondern ruft die nächst höhere Seite au,f die zu erreichen ist. Im besten Fall die direkt übergeordnete Seite, im ungünstigsten Fall die root-Seite.

pageNotFound_handling

TYPO3 bietet zur Fehlerbehandlung die Option pageNotFound_handling im Install-Tool. Dort gibt es verschiedene Möglichkeiten der Fehlerbehandlung.

Wenn Sie bei pageNotFound_handling etwas angeben, hat dieses Vorang vor der Angabe ignore und blank value bei postVarSet_failureMode. 

In pageNotFound_handling können Sie angeben, welche Seite als Fehlerseite aufgerufen werden soll, ob Sie eine Datei einlesen oder eine Funktion aufrufen wollen. Gerade die Möglichkeit eine Funktion aufzurufen lässt Ihnen freie Hand eine geeignete Fehlerbehandlung auszuführen die auch SEO (Suchmaschinenoptimierung) freundlich ist.

Meine Empfehlung

Um eine gute Besucher-Führung zu erreichen und auch im Hinblick auf SEO empfehle ich, bei postVarSet_failureMode blank value und bei pageNotFound_handling den Einsatz einer Funktion. Es können indiviuelle Seiten bestimmt und passende header gesendet werden. 

Beispiel

Rufen Sie unsere Snippets Seite unter http://typo3.intervation.de/snippets.html auf. Die Seite erscheint ohne eine "Fehlermeldung". Rufen Sie nun die Seite http://typo3.intervation.de/snippets/allgemein/rendring-und-refernz525.html auf. Diese Seite ist auf unserem Server nicht vorhanden! Sie werden nun auf die Snippets-Seite weitergeleitet, da anhand der URL erkannt wurde, dass Sie eine Seite aus dem Bereich snippets aufrufen wollten. Es wird eine kurze Meldung eingeblendet und der header (HTTP-Statuscodes ) HTTP/1.1 301 Moved Permanently wird gesendet.

Das Senden eines passenden headers ist für die SEO von besonderer Bedeutung, da dem Spider mitgeteilen werden kann, was mit der alten Seite passiert ist. Ein header 404 ist die ungünstigste Möglichkeit. Informationen zu HTTP-Statuscodes finden Sie unter http://de.wikipedia.org/wiki/HTTP-Statuscodes

Gleichzeitig wird der Benuter auf eine Seite geleitet, die passende Informationen zur seiner ursprünglichen Anfrage bietet.

Vorgehen

ext_localconf.php

postVarSet_failureMode wird blank value gesetzt.

'postVarSet_failureMode' => '',
'postVarSet_failureMode' => '',

postVarSet_failureMode wird im init-Array der realurl Konfiguration eingefügt

Install-Tool

Im Install-Tool wird unter pageNotFound_handling angegeben welche Aktion ausgeführt werden soll

USER_FUNCTION:typo3conf/pagenotfoundhandling.php:user_pageNotFound->pageNotFound
USER_FUNCTION:typo3conf/pagenotfoundhandling.php:user_pageNotFound->pageNotFound

pagenotfoundhandling.php

Es wird die Datei pagenotfoundhandling.php erstellt und auf den Server geladen.

<?php class user_pageNotFound { function pageNotFound($param, $ref) { if (preg_match('#^/snippets#', $param['currentUrl'])) { header("HTTP/1.1 301 Moved Permanently"); header("Location: http://typo3.intervation.de/snippets.html?error=snipptes"); } else { header("HTTP/1.1 301 Moved Permanently"); header("Location: http://typo3.intervation.de/index.php?id=214"); } } } ?>
  1. <?php
  2.  
  3. class user_pageNotFound {
  4.  
  5.   function pageNotFound($param, $ref) {
  6.    
  7.     if (preg_match('#^/snippets#', $param['currentUrl'])) {
  8.    
  9.       header("HTTP/1.1 301 Moved Permanently");
  10.       header("Location: http://typo3.intervation.de/snippets.html?error=snipptes");
  11.  
  12.     }
  13.     else {
  14.    
  15.       header("HTTP/1.1 301 Moved Permanently");
  16.       header("Location: http://typo3.intervation.de/index.php?id=214");
  17.    
  18.     }
  19.  
  20.   }
  21.  
  22. }
  23.  
  24. ?>

Multi Domain

Es können auch ohne weiteres mehrer Domain verwaltet werden. Einfach in die pagenotfoundhandling.php die passenden Abfragen schreiben.

if (t3lib_div::getIndpEnv('HTTP_HOST') == 'typo3.intervation.de' ) { }
  1. if (t3lib_div::getIndpEnv('HTTP_HOST') == 'typo3.intervation.de' ) {
  2.  
  3. }

Keine Grenzen

Sie können die verschiedeneste Aufgaben mittels der Function ausführen, es sind keine Grenzen gesetzt.

Sponsored by:

ideenwerft webhosting
ideenwerft caretaker