[Frage] Anstatt 404 wird Rootpage angezeigt, Fehlkonfiguration?

  • xraysoft xraysoft
    T3PO
    0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    18. 02. 2016, 12:16

    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

    1. config {
    2. admPanel = 0
    3. disablePrefixComment = 1
    4. contentObjectExceptionHandler = 0
    5. spamProtectEmailAddresses = 2
    6. spamProtectEmailAddresses_atSubst = (at)
    7. doctype = html5
    8. xmlprologue = none
    9. linkVars = L
    10. xhtml_cleaning = all
    11. insertDmailerBoundaries = 1
    12. no_cache = 0
    13. sendCacheHeaders = 1
    14. uniqueLinkVars = 1
    15. sys_language_overlay = 1
    16. sys_language_mode = strict
    17. metaCharset = utf-8
    18. additionalHeaders = Content-Type:text/html;charset=utf-8
    19. simulateStaticDocuments = 0
    20. baseURL = http://xxx
    21. absRelPath = /
    22. prefixLocalAnchors = all
    23. tx_realurl_enable = 1
    24. removeDefaultJS = external
    25. inlineStyle2TempFile = 1
    26. }
    27. [globalVar = TSFE:id = 10]
    28. config.additionalHeaders = HTTP/1.1 404 Not Found
    29. [global]
    30.  
    31. #######################
    32. # Spracheinstellungen #
    33. #######################
    34. config.sys_language_uid = 0
    35. config.language = de
    36. config.htmlTag_langKey = de-DE
    37. config.locale_all = de_DE.utf-8
    38. page.meta.language = de
    39.  
    40. [globalVar = GP:L=1]
    41. config.sys_language_uid = 1
    42. config.language = en
    43. config.htmlTag_langKey = en
    44. config.locale_all = en_US.utf-8
    45. page.meta.language = en
    46. [global]
    47.  
    48. [globalVar = GP:L=2]
    49. config.sys_language_uid = 2
    50. config.language = es
    51. config.htmlTag_langKey = es
    52. config.locale_all = es_ES.utf-8
    53. page.meta.language = es
    54. [global]
    55.  
    56. [globalVar = GP:L=3]
    57. config.sys_language_uid = 3
    58. config.language = ru
    59. config.htmlTag_langKey = ru
    60. config.locale_all = ru_RU.utf-8
    61. page.meta.language = ru
    62. [global]

    realurl_conf.php

    1. $TYPO3_CONF_VARS['FE']['addRootLineFields'].= ',tx_realurl_pathsegment';
    2. $TYPO3_CONF_VARS['EXTCONF']['realurl'] = array(
    3. '_DEFAULT' => array(
    4. 'init' => array(
    5. 'enableCHashCache' => 1,
    6. 'appendMissingSlash' => 'ifNotFile',
    7. 'enableUrlDecodeCache' => 1,
    8. 'enableUrlEncodeCache' => 1,
    9. 'postVarSet_failureMode' => '',
    10. ),
    11. 'redirects' => array(),
    12. 'preVars' => array(
    13. 'GETvar' => 'no_cache',
    14. 'valueMap' => array(
    15. 'nc' => 1,
    16. ),
    17. 'noMatch' => 'bypass',
    18. ),
    19. 'GETvar' => 'L',
    20. 'valueMap' => array(
    21. 'de' => '0',
    22. 'en' => '1',
    23. 'es' => '2',
    24. 'ru' => '3',
    25. ),
    26. 'valueDefault' => 'de',
    27. 'noMatch' => 'bypass',
    28. ),
    29. ),
    30. 'pagePath' => array(
    31. 'type' => 'user',
    32. 'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
    33. 'spaceCharacter' => '-',
    34. 'languageGetVar' => 'L',
    35. 'expireDays' => 7,
    36. 'rootpage_id' => 47,
    37. 'firstHitPathCache' => 1,
    38. ),
    39. 'fileName' => array(
    40. 'defaultToHTMLsuffixOnPrev' => 1,
    41. 'acceptHTMLsuffix' => 1,
    42. 'index' => array(
    43. 'print.html' => array(
    44. 'keyValues' => array(
    45. 'type' => 98,
    46. ),
    47. ),
    48. 'rss.xml' => array(
    49. 'keyValues' => array(
    50. 'type' => 100,
    51. ),
    52. ),
    53. 'rss091.xml' => array(
    54. 'keyValues' => array(
    55. 'type' => 101,
    56. ),
    57. ),
    58. 'rdf.xml' => array(
    59. 'keyValues' => array(
    60. 'type' => 102,
    61. ),
    62. ),
    63. 'atom.xml' => array(
    64. 'keyValues' => array(
    65. 'type' => 103,
    66. ),
    67. ),
    68. ),
    69. ),
    70. 'fixedPostVars' => array(
    71. ),
    72. 'postVarSets' => array(
    73. '_DEFAULT' => array(
    74. 'dateFilter' => array(
    75. 'GETvar' => 'tx_news_pi1[overwriteDemand][year]',
    76. ),
    77. 'GETvar' => 'tx_news_pi1[overwriteDemand][month]',
    78. ),
    79. ),
    80. 'page' => array(
    81. 'GETvar' => 'tx_news_pi1[@widget_0][currentPage]',
    82. ),
    83. ),
    84. ),
    85. ),
    86. ),
    87. );

    LocalConfiguration.php

    1. return [
    2. 'BE' => [
    3. ...
    4. ],
    5. 'DB' => [
    6. ...
    7. ],
    8. 'EXT' => [
    9. 'extConf' => [
    10. ...
    11. ],
    12. ],
    13. 'EXTCONF' => [
    14. 'lang' => [
    15. 'availableLanguages' => [
    16. 'de',
    17. 'ru',
    18. 'es',
    19. ],
    20. ],
    21. ],
    22. 'FE' => [
    23. 'compressionLevel' => '9',
    24. 'debug' => false,
    25. 'loginSecurityLevel' => 'rsa',
    26. 'pageNotFound_handling' => 'USER_FUNCTION:fileadmin/templates/php/pageNotFoundHandling.php:user_pageNotFound->pageNotFound',
    27. 'pageNotFound_handling_redirectPageID' => 10,
    28. 'pageUnavailable_force' => '0',
    29. 'versionNumberInFilename' => 'embed',
    30. ],
    31. 'GFX' => [
    32. ...
    33. ],
    34. 'HTTP' => [
    35. 'adapter' => 'curl',
    36. ],
    37. 'INSTALL' => [
    38. 'wizardDone' => [
    39. ...
    40. ],
    41. ],
    42. 'MAIL' => [
    43. ...
    44. ],
    45. 'SYS' => [
    46. 'UTF8filesystem' => '1',
    47. 'belogErrorReporting' => '0',
    48. 'caching' => [
    49. 'cacheConfigurations' => [
    50. 'extbase_object' => [
    51. 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcBackend',
    52. 'frontend' => 'TYPO3\\CMS\\Core\\Cache\\Frontend\\VariableFrontend',
    53. 'groups' => [
    54. 'system',
    55. ],
    56. 'options' => [
    57. 'defaultLifetime' => 0,
    58. ],
    59. ],
    60. ],
    61. ],
    62. 'clearCacheSystem' => false,
    63. 'curlUse' => '1',
    64. 'devIPmask' => '',
    65. 'displayErrors' => 0,
    66. 'doNotCheckReferer' => '1',
    67. 'enableDeprecationLog' => false,
    68. 'exceptionalErrors' => 28674,
    69. 'fileCreateMask' => '0644',
    70. 'folderCreateMask' => '0755',
    71. 'isInitialInstallationInProgress' => false,
    72. 'phpTimeZone' => 'Europe/Berlin',
    73. 'sqlDebug' => 0,
    74. 'syslogErrorReporting' => '0',
    75. 'systemLocale' => 'de_DE',
    76. 'systemLogLevel' => 2,
    77. 't3lib_cs_convMethod' => 'mbstring',
    78. 't3lib_cs_utils' => 'mbstring',
    79. 'textfile_ext' => 'txt,html,htm,css,tmpl,js,sql,xml,csv,xlf,yaml,t3s,ts',
    80. ],
    81. ];

    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ß?


  • 1
  • xraysoft xraysoft
    T3PO
    0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    18. 02. 2016, 12:25

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

    1. class user_pageNotFound {
    2. /**
    3.   * Detect language and redirect to 404 error page
    4.   *
    5.   * @param array $params: "currentUrl", "reasonText" and "pageAccessFailureReasons"
    6.   * @param object $tsfeObj: object type "tslib_fe"
    7.   */
    8. function pageNotFound($params, $tsfeObj) {
    9. // get first realurl configuration array (important for multidomain)
    10. $realurlConf = array_shift($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']);
    11. // look for language configuration
    12. foreach($realurlConf['preVars'] as $conf) {
    13. if($conf['GETvar'] == 'L') {
    14. foreach($conf['valueMap'] as $k => $v) {
    15. // we expect a part like "/de/" in requested url
    16. if(strpos($params['currentUrl'], '/' . $k . '/') !== false) {
    17. switch($v) {
    18. case 1:
    19. $tsfeObj->pageErrorHandler('/en/404.html');
    20. break;
    21. case 2:
    22. $tsfeObj->pageErrorHandler('/es/404.html');
    23. break;
    24. case 3:
    25. $tsfeObj->pageErrorHandler('/ru/404.html');
    26. break;
    27. default:
    28. $tsfeObj->pageErrorHandler('/404.html');
    29. }
    30. }
    31. }
    32. }
    33. }
    34. // handle default language
    35. $tsfeObj->pageErrorHandler('/404.html');
    36. }
    37. }

  • xraysoft xraysoft
    T3PO
    0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    19. 02. 2016, 13:45

    Hat niemand eine Idee oder bin ich zu ungeduldig?

  • newbie12 newbie12
    T3PO
    0 x
    24 Beiträge
    0 Hilfreiche Beiträge
    07. 06. 2016, 09:42

    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 http://www.domain.com/de/blabla ein, geht korrekt die 404 auf.
    Gibt man http://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 bennof
    TYPO3-Anwärter
    0 x
    5 Beiträge
    1 Hilfreiche Beiträge
    10. 10. 2017, 17:48

    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;
    }
    }

  • 1