Zum Inhalt springen

Anstatt 404 wird Rootpage angezeigt, Fehlkonfiguration?

Erstellt am 18. Februar 2016 · 4 Antworten · letzte Antwort am 10. Oktober 2017

Tags: RealURL, Weiterleitungen & 404, TYPO3 7, Frage

xraysoft ·

Hallo zusammen,

ich habe folgendes Problem:
Sobald ich eine nicht vorhandene Seite in meinem TYPO3 aufrufe, bekomme ich anstatt der 404-Seite die Startseite (Rootpage) angezeigt. Als ich es ganz zu Beginn der Entwicklung konfiguriert habe, ging noch alles, aber irgendwann war der Wurm drin.

Kurz zur Ausgangssituation:
TYPO3 Version 7.6.2
RealUrl Version 2.22.1

Typoscirpt Setup

config {
  admPanel = 0
  disablePrefixComment = 1
  contentObjectExceptionHandler = 0
  spamProtectEmailAddresses = 2
  spamProtectEmailAddresses_atSubst = (at)
  doctype = html5
  xmlprologue = none
  linkVars = L
  xhtml_cleaning = all
  insertDmailerBoundaries = 1
  no_cache = 0
  sendCacheHeaders = 1
  uniqueLinkVars = 1
  sys_language_overlay = 1
  sys_language_mode = strict
  metaCharset = utf-8
  additionalHeaders = Content-Type:text/html;charset=utf-8
  simulateStaticDocuments = 0
  baseURL = http://xxx
  absRelPath = /
  prefixLocalAnchors = all
  tx_realurl_enable = 1
  removeDefaultJS = external
  inlineStyle2TempFile = 1
}
[globalVar = TSFE:id = 10]
  config.additionalHeaders = HTTP/1.1 404 Not Found
[global]

#######################
# Spracheinstellungen #
#######################
config.sys_language_uid = 0
config.language = de
config.htmlTag_langKey = de-DE
config.locale_all = de_DE.utf-8
page.meta.language = de

[globalVar = GP:L=1]
  config.sys_language_uid = 1
  config.language = en
  config.htmlTag_langKey = en
  config.locale_all = en_US.utf-8
  page.meta.language = en
[global]

[globalVar = GP:L=2]
  config.sys_language_uid = 2
  config.language = es
  config.htmlTag_langKey = es
  config.locale_all = es_ES.utf-8
  page.meta.language = es
[global]

[globalVar = GP:L=3]
  config.sys_language_uid = 3
  config.language = ru
  config.htmlTag_langKey = ru
  config.locale_all = ru_RU.utf-8
  page.meta.language = ru
[global]

realurl_conf.php

$TYPO3_CONF_VARS['FE']['addRootLineFields'].= ',tx_realurl_pathsegment';
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array(
  '_DEFAULT' => array(
    'init' => array(
      'enableCHashCache' => 1,
      'appendMissingSlash' => 'ifNotFile',
      'enableUrlDecodeCache' => 1,
      'enableUrlEncodeCache' => 1,
      'postVarSet_failureMode' => '',
    ),
    'redirects' => array(),
    'preVars' => array(
      array(
        'GETvar' => 'no_cache',
        'valueMap' => array(
          'nc' => 1,
        ),
        'noMatch' => 'bypass',
      ),
      array(
        'GETvar' => 'L',
        'valueMap' => array(
          'de' => '0',
          'en' => '1',
          'es' => '2',
          'ru' => '3',
        ),
        'valueDefault' => 'de',
        'noMatch' => 'bypass',
      ),
    ),
    'pagePath' => array(
      'type' => 'user',
      'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
      'spaceCharacter' => '-',
      'languageGetVar' => 'L',
      'expireDays' => 7,
      'rootpage_id' => 47,
      'firstHitPathCache' => 1,
    ),
    'fileName' => array(
      'defaultToHTMLsuffixOnPrev' => 1,
      'acceptHTMLsuffix' => 1,
      'index' => array(
        'print.html' => array(
          'keyValues' => array(
            'type' => 98,
          ),
        ),
        'rss.xml' => array(
          'keyValues' => array(
            'type' => 100,
          ),
        ),
        'rss091.xml' => array(
          'keyValues' => array(
            'type' => 101,
          ),
        ),
        'rdf.xml' => array(
          'keyValues' => array(
            'type' => 102,
          ),
        ),
        'atom.xml' => array(
          'keyValues' => array(
            'type' => 103,
          ),
        ),
      ),
    ),
    'fixedPostVars' => array(      
    ),
    'postVarSets' => array(
      '_DEFAULT' => array(
        'dateFilter' => array(
          array(
            'GETvar' => 'tx_news_pi1[overwriteDemand][year]',
          ),
          array(
            'GETvar' => 'tx_news_pi1[overwriteDemand][month]',
          ),
        ),
        'page' => array(
          array(
            'GETvar' => 'tx_news_pi1[@widget_0][currentPage]',
          ),
        ),
      ),
    ),
  ),
);

LocalConfiguration.php

return [
    'BE' => [
        ...
    ],
    'DB' => [
        ...
    ],
    'EXT' => [
        'extConf' => [
            ...
        ],
    ],
    'EXTCONF' => [
        'lang' => [
            'availableLanguages' => [
                'de',
                'ru',
                'es',
            ],
        ],
    ],
    'FE' => [
        'compressionLevel' => '9',
        'debug' => false,
        'loginSecurityLevel' => 'rsa',
        'pageNotFound_handling' => 'USER_FUNCTION:fileadmin/templates/php/pageNotFoundHandling.php:user_pageNotFound->pageNotFound',
        'pageNotFound_handling_redirectPageID' => 10,
        'pageUnavailable_force' => '0',
        'versionNumberInFilename' => 'embed',
    ],
    'GFX' => [
        ...
    ],
    'HTTP' => [
        'adapter' => 'curl',
    ],
    'INSTALL' => [
        'wizardDone' => [
            ...
        ],
    ],
    'MAIL' => [
        ...
    ],
    'SYS' => [
        'UTF8filesystem' => '1',
        'belogErrorReporting' => '0',
        'caching' => [
            'cacheConfigurations' => [
                'extbase_object' => [
                    'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcBackend',
                    'frontend' => 'TYPO3\\CMS\\Core\\Cache\\Frontend\\VariableFrontend',
                    'groups' => [
                        'system',
                    ],
                    'options' => [
                        'defaultLifetime' => 0,
                    ],
                ],
            ],
        ],
        'clearCacheSystem' => false,
        'curlUse' => '1',
        'devIPmask' => '',
        'displayErrors' => 0,
        'doNotCheckReferer' => '1',
        'enableDeprecationLog' => false,
        'exceptionalErrors' => 28674,
        'fileCreateMask' => '0644',
        'folderCreateMask' => '0755',
        'isInitialInstallationInProgress' => false,
        'phpTimeZone' => 'Europe/Berlin',
        'sqlDebug' => 0,
        'syslogErrorReporting' => '0',
        'systemLocale' => 'de_DE',
        'systemLogLevel' => 2,
        't3lib_cs_convMethod' => 'mbstring',
        't3lib_cs_utils' => 'mbstring',
        'textfile_ext' => 'txt,html,htm,css,tmpl,js,sql,xml,csv,xlf,yaml,t3s,ts',
    ],
];

Hab ich irgendwas vergessen, ich sehe es nicht.
Zur Vollständigkeit, meine Rootpage hat die ID 47 und meine 404-Seite die ID 10.

Hat irgendjemand einen Tipp oder Denkanstoß?

xraysoft ·

Sorry habe hier die Versionsnummer von RealUrl verwechselt.
Meine Version ist die 1.13.6
Und zur Vollständigkeit hier noch meine pageNotFoundHandling.php

class user_pageNotFound {
  /**
   * Detect language and redirect to 404 error page
   *
   * @param array $params: "currentUrl", "reasonText" and "pageAccessFailureReasons"
   * @param object $tsfeObj: object type "tslib_fe"
   */
  function pageNotFound($params, $tsfeObj) {
    // get first realurl configuration array (important for multidomain)
    $realurlConf = array_shift($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']);
    // look for language configuration
    foreach($realurlConf['preVars'] as $conf) {
      if($conf['GETvar'] == 'L') {
        foreach($conf['valueMap'] as $k => $v) {
          // we expect a part like "/de/" in requested url
          if(strpos($params['currentUrl'], '/' . $k . '/') !== false) {
            switch($v) {
              case 1:
                $tsfeObj->pageErrorHandler('/en/404.html');
                break;
              case 2:
                $tsfeObj->pageErrorHandler('/es/404.html');
                break;
              case 3:
                $tsfeObj->pageErrorHandler('/ru/404.html');
                break;
              default:
                $tsfeObj->pageErrorHandler('/404.html');
            }
          }
        }
      }
    }
    // handle default language
    $tsfeObj->pageErrorHandler('/404.html');
  }
}
newbie12 ·

Hy xraysoft,
kann dir leider bei deinem Problem nicht weiterhelfen. Wollte bei meinem ähnlichen Problem jedoch nicht eigens einen neuen Beitrag aufmachen.

Bei mir macht er folgendes:
Gibt man www.domain.com/de/blabla ein, geht korrekt die 404 auf.
Gibt man www.domain.com/blabla ein, dann wird auf die Startseite umgeleitet und es wird ein 200 Status ausgegeben. Eigentlich müsste hier jedoch auch die 404er kommen.
Hat jemand schon mal etwas ähnliches beobachtet und eventuell einen Tipp für mich?

P.S. @xraysoft:
Hab bei mir in der LocalConfig.php beim pageNotFound_handling 'de/404/' stehen und funktioniert, bis auf das genannte Problem einwandfrei. Du rufst da eine Funktion auf? Darf ich denn fragen, wie die aussieht?
Und wird den sowohl 'pageNotFound_handling' als auch 'pageNotFound_handling_redirectPageID' benötigt? Meiner Erfahrung nach reicht das pageNotFound_handling aus.

L.G.

bennof ·

Kannst das Verhalten auch in AdditionalConfiguration.php hacken:

// Find first not empty url subpart (works for //de/blabla, /de/blabla, de/blabla etc.)
$firstUrlSubPart = current(array_filter(explode('/', $_SERVER['REQUEST_URI'])));

// Redirects for multiple roots / domains / subdomains
if (strpos($_SERVER['SERVER_NAME'], 'subdomain1') !== false) {

// Get redirect by language prefix
switch ($firstUrlSubPart) {
case 'de': $redirect = '/de/404-subdomain1'; break;
case 'fr': $redirect = '/fr/404-subdomain1'; break;
case 'en': $redirect = '/en/404-subdomain1'; break;
default: $redirect = '/de/404-subdomain1'; break;
}
}
else {
switch ($firstUrlSubPart) {
case 'chde': $redirect = '/chde/404'; break;
case 'chfr': $redirect = '/chfr/404'; break;
case 'fr': $redirect = '/fr/404'; break;
case 'en': $redirect = '/en/404'; break;
default: $redirect = '/en/404'; break;
}
}