Zum Inhalt springen

404 führt zur Startseite

Erstellt am 24. März 2014 · 3 Antworten · letzte Antwort am 1. April 2014

Tags: Weiterleitungen & 404, TYPO3 6, Frage

daFalk ·

Hallo,

ich wusste nicht wo ich das Thema hinpacken sollte. Folgendes Problem:
Ich habe eine normale page namens 404 angelegt. Dann habe ich im installtool den Wert bei PagNotFoundHandling auf "/404/" gesetzt. (mit und ohne Slashs probiert) Der Header war schon gesetzt.

Sobald ich das getan habe führt die Eingabe einer nicht vorhandenen Seite sofort zur rootpage. Angezeigt wird immer die root der Standarfsprache. Ich habe auch probiert in der LocalConf folgenden Code einzufügen:

if (preg_match('/\/en\//', $_SERVER['REQUEST_URI']) || $_GET['L'] == 1) {
  $TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = '/en/404/';
} else  {
  $TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = '/de/404/';
}

Hilft auch nix. Problem bleibt.

Kennt das Problem jemand? Kann mir jemand einen TIP geben bitte? LG & DANKE, Falk

toifel ·

Aus der Beschreibung im Install-Tool:
"If prefixed with "REDIRECT:" it will redirect to the URL/script after the prefix."

Also mal mit REDIRECT: /404/ probieren.

Velletti ·

wenn "REDIRECT:" davor nicht hilft:

ich hab das Pagenot Found setting in der RealURl.php. statt in der Localconf.php
Evt. beisst sich das??

PS: zudem setze ich das so : in Abhängigkeit der Domain und ob der User eingeloggt ist oder nicht (das zu unterscheiden scheitert aber in manchen Fällen am Caching) habe ich unterschiedliche 404 Seiten ..

Zuerst einige "if" bzw. CASE schleifen wegen domain / ist eingeloggt ... um die PID zu setzen
$pageNotFound_PID = xxx ;

dann:

daFalk schrieb

Hallo,

if (preg_match('/\/en\//', $_SERVER['REQUEST_URI']) || $_GET['L'] == 1) {
 $TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = 'index.php?id=' . $pageNotFound_PID . "&L=1" ;
} else  {
  $TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = 'index.php?id=' . $pageNotFound_PID . "&L=1" ;
}
daFalk · · Beste Antwort

vielen Dank für eure Tips!
Ich habe es nun so gelöst:

in meine pagenotfoundhandling.php habe ich:

class user_pageNotFound {
	function pageNotFound($param, $ref) {

		if (preg_match('/\/de\//', $_SERVER['REQUEST_URI']) || $_GET['L'] == 1) {
				header("HTTP/1.0 404 Not Found");
				header("Location: /de/404/");
		} else {
				header("HTTP/1.0 404 Not Found");
				header("Location: /en/404/");
		} 

	}
}

damit funktioniert die 404 aber noch nicht wenn eine falsche URL ohne Länderkürzel eingegeben wurde.
Das umgehe ich, indem ich in der RealURL conf noch ein

'noMatch' => 'bypass',

eingefügt habe so dass immer ein Sprachkürzel angezeigt wird. Diese Lösung ist für mich annehmbar. Hoffentlich auch für den Kunden.🙂

BG, Falk