Zum Inhalt springen

RealURL ich auch 404 Errors

Erstellt am 6. November 2007 · 9 Antworten · letzte Antwort am 7. November 2007

Tags: Frage

Darthstar ·

Hallo,

jede Extension ärgert mich am Anfang. Ich habe hier im forum jede Anleitung ausprobiert und bekomme trotzdem außer auf der root Seite einen 404 Error.

Mein System Typo3 4.1.3. mit RealURL 1.2.1

im SETUP des Templates habe ich folgendes

    config.simulateStaticDocuments = 0
	config.baseURL = http://absoluterPfadZuIndex.phpUnd.htaccessMitAbschliessendemSlash/
	config.tx_realurl_enable = 1
	config.prefixLocalAnchors = all

die .htaccess Datei habe ich laut Anleitung mit folgendem bestückt

RewriteEngine On
RewriteRule ^typo3$ - [L]
RewriteRule ^typo3/.*$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php

die ext_localconf.php

<?php

$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tstemplate.php']['linkData-PostProc']['tx_realurl'] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->encodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-PostProc']['tx_realurl'] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearPageCacheEval']['tx_realurl'] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->clearPageCacheMgm';

$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_urldecodecache'] = 'tx_realurl_urldecodecache';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_urlencodecache'] = 'tx_realurl_urlencodecache';

$TYPO3_CONF_VARS['FE']['addRootLineFields'].= ',tx_realurl_pathsegment';

$TYPO3_CONF_VARS['EXTCONF'] ['realurl'] ['_DEFAULT'] = array(
        'init' => array(
          'enableCHashCache' => 1,
          'enableUrlDecodeCache' => 1,
          'enableUrlEncodeHash' => 1,
        ),
                        'preVars' => array(
                      array(
                       'GETvar' => 'L',
             'valueMap' => array(
                        'de' => '0',
                                     'en' => '1',
             ),
                       'valueDefault' => 'de',
                ),
           ),
                'pagePath' => array(
             'type' => 'user',
             'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
             'spaceCharacter' => '-',
             'languageGetVar' => 'L',
             'expireDays' => 3,
             'rootpage_id' => '1'
        ),
                'fileName' => array (
                   'defaultToHTMLsuffixOnPrev' => 1,
             'index' => array(
            'page.html' => array(
                                     'keyValues' => array (
                                'type' => 1,
                                     ),
            ),
             ),
        ),
                'fixedPostVarSets' => array(
           ),
                'postVarSets' => array(
          '_DEFAULT' => array(
                              'period' => array (
                            array (
                    'condPrevValue' => -1,
                    'GETvar' => 'tx_ttnews[pS]',
                    //'valueMap => array()
                            ),
                            array (
                    'GETvar' => 'tx_ttnews[pL]',
                    //'valueMap => array()
                            ),   
                                            array (
                    'GETvar' => 'tx_ttnews[arc]',
                    'valueMap' => array(
                    'non-archived' => -1,
                                ),
                                     ),
            ),
                          'browse' => array (
              array (
                                            'GETvar' => 'tx_ttnews[pointer]',
              ),
                           ),
                                  'select' => array (
              array (
                                            'GETvar' => 'tx_ttnews[cat]',
                                            'lookUpTable' => array (
                                    'table' => 'tt_news_cat',
                                    'id_field' => 'uid',
                                    'alias_field' => 'title',
                                    'addWhereClause'=> 'AND NOT deleted',
                                    'useUniqueCache'=> 1,
                                    'useUniqueCache_conf' => array (
                      'strtolower' => 1,
                      'spaceCharacter' => '-',
                                    ),
                                             ),
              ),
                           ),
                                                'article' => array(
                                   array (
                'GETvar' => 'tx_ttnews[backPid]',
                // 'valueMap => array(
                // ),
                       ),
                                   array (
                'GETvar' => 'tx_ttnews[tt_news]',
                                              'lookUpTable' => array (
                  'table' => 'tt_news',
                  'id_field' => 'uid',
                  'alias_field' => 'title',
                  'maxLength' => 12,
                  'addWhereClause'=> 'AND NOT deleted',
                  'useUniqueCache'=> 1,
                  'useUniqueCache_conf' => array (
                                                          'strtolower' => 1,
                                                          'spaceCharacter' => '-',
                  ),
                                           ),
                                ),
                        ),
                ),
        ),
);

?>

Trotzdem nur 404 Errors.
Was mache ich falsch?

Darthstar ·

Hallo,

vielleicht sollte ich noch dazu sagen, dass die Typo3 Installation in einem unterverzeichnis liegt. Ich habe aber das BaseURL dementsprechend angepasst.
Ich verzweifele. Habe jetzt schon 3 weitere Tutorials im netz ausprobiert #angry# #angry# #angry# #angry# #angry# 😢

Kann es sein, dass die neuste Version nicht verwendet werden sollte und ich lieber eine alte Version von RealURL nehme?

BITTE bitte helft mir. Wenn es auch nur ein kurzer Tipp ist.

digedag ·
Darthstar schrieb
	config.baseURL = http://absoluterPfadZuIndex.phpUnd.htaccessMitAbschliessendemSlash/

Kannst du das mal so schreiben, daß man es versteht? 😉
Die Base-Url lautet entweder http://www.deinedomain.de/ oder wenn TYPO3 bei dir in einem Unterverzeichnis liegt http://www.deinedomain.de/deinSubDir/. Die index.php hat da nichts drin verloren.

Darthstar schrieb
RewriteEngine On
RewriteRule ^typo3$ - [L]
RewriteRule ^typo3/.*$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php

Eventuell musst du bei einem Unterverzeichnis mal

RewriteBase /
oder
RewriteBase /deinSubDir/

mit angeben. Ich hatte mal eine Installation, die wollte ohne RewriteBase auch nicht tun...

Darthstar schrieb

Trotzdem nur 404 Errors.
Was mache ich falsch?

Zum Beispiel könntest du den Fehler noch etwas ausführlich beschreiben. Werden deine Links denn schon korrekt erzeugt? Also stimmt die erzeugte URL mit deiner Struktur im Seitenbaum überein?
Der 404 bedeutet aber vermutlich, das du ein Problem mit dem Url-Rewriting des Apache hast. Dieser dekodiert die Adresse nicht richtig und erreicht dadurch TYPO3 nicht.

Darthstar ·

erstmal Danke für deine Antwort. Meine Kommentare:

Kannst du das mal so schreiben, daß man es versteht?icon_wink.gif
Die Base-Url lautet entweder http://www.deinedomain.de/ oder wenn TYPO3 bei dir in einem Unterverzeichnis liegt http://www.deinedomain.de/deinSubDir/. Die index.php hat da nichts drin verloren.

naja, ich meine das SubDir in dem Typo3 bei mir liegt. also

http://www.meineDomain.de/unterverzeichnis1/unterverzeichnis2/

Im Unterverzeichnis2 liegt Typo3 (inklusive index.php). Also die Ordner Typo3, Typo3conf,typo3temp etc etc#

RewriteBase /deinSubDir/

habe ich probiert. Dies führte dazu , dass egal auf welchen link ich klicke immer nur die index.php aufgerufen wurde.

Mit anfänglich beschriebener Konfiguration passiert folgendes:

Wenn ich nun auf Links klicke wird bspw.

http://www.meineDomain.de/unterverzeichnis1/unterverzeichnis2/hauptmenu/impressum.html

aufgerufen

--> 404

😢

digedag ·

Also die Links werden offensichtlich von RealUrl richtig erzeugt. Sie passen ja genau zu deinem Verzeichnisbaum. Dein Problem liegt mit 99-prozentiger Sicherheit an der Rewrite-Engine des Apache.
Der 404 wird ja vom Webserver geworfen, wenn er mit der Anfrage nichts anfangen kann. Er baut bestimmt die falsche URL auf. Von TYPO3 würdest du in dem Fall einen der berüchtigten postVarSet-Fehler erhalten. Wenn du dann mal soweit bist, hast du es fast geschafft! #giggle#

Schau mal im Errorlog des Apache nach, ob da vielleicht noch was Erhellendes steht.

Darthstar ·

aber das rewrite funktioniert. Ich habe den "Google Test" gemacht, also einfach jeden Aufruf auf www.google.de umleiten lassen. Funzte einwandfrei.

Sobald ich an der RewriteBase etwas ändere tritt ja auch eine Änderung in Kraft. Also das rewrite funzt.

Bei meinen endlosen Versuchen hatte ich 1-2 auch die reaktion, dass mir eine Fehlermeldung ausgegeben wurde, dass die index.php nicht gefunden werden würde und er deshalb anbieten würde im absoluten root (also 2 Verzeichnisse unter Typo) auf die index.htm zu wechseln (ein Mutiple Choices Fehler)...

digedag ·

Also ich wollte auch nicht behaupten, daß rewrite nicht funktioniert. Es tut nur offensichtlich nicht das Richtige! 😉

Diese rewrite Anweisung hat ja den Zweck, die lesbare URL mit dem .html am Ende wieder in die index.php von TYPO3 umzuwandeln. Dafür muss die URL natürlich auch wieder genau passen, damit die index.php auch gefunden wird. Letzteres scheint bei dir nicht zu klappen, da der Apache 404 ausgibt.

Hast du mal in das Errorlog gesehen? Vielleicht steht da ja drin, welche URL der Apache aufruft.

Darthstar ·

ich arbeite auf einem 1&1 Server (alter Vertrag, ohne root, aber SSH)
Da kann ich an sowas laut online Hilfe Formular nicht rankommen. Es sei denn ich schreibe es selber

dafür wäre folgender Code vorgsehen. Reicht der? wenn ja, worein kopiere ich den?

<?php
  error_reporting(0); 
  $old_error_handler = set_error_handler("userErrorHandler");

  function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) { 
    $time=date("d M Y H:i:s"); 
    // Get the error type from the error number 
    $errortype = array (1    => "Error",
                        2    => "Warning",
                        4    => "Parsing Error",
                        8    => "Notice",
                        16   => "Core Error",
                        32   => "Core Warning",
                        64   => "Compile Error",
                        128  => "Compile Warning",
                        256  => "User Error",
                        512  => "User Warning",
                        1024 => "User Notice"); 

  $errlevel=$errortype[$errno]; 

  //Write error to log file (CSV format) 
  $errfile=fopen("errors.csv","a"); 
  fputs($errfile,"\"$time\",\"$filename: $linenum\",\"($errlevel) $errmsg\"\r\n"); 
  fclose($errfile); 

  if($errno!=2 && $errno!=8-) {
    //Terminate script if fatal errror
    die("A fatal error has occured. Script execution has been aborted"); 
    } 
  } 

?>
digedag ·
Darthstar schrieb

ich arbeite auf einem 1&1 Server (alter Vertrag, ohne root, aber SSH)
Da kann ich an sowas laut online Hilfe Formular nicht rankommen. Es sei denn ich schreibe es selber

dafür wäre folgender Code vorgsehen. Reicht der? wenn ja, worein kopiere ich den?

Das Script wird vermutlich nicht wirken, weil es ja nur PHP-Fehler abfängt und mitloggt. Zum Aufruf von PHP kommt es aber bei dir noch gar nicht.
Bei TYPO3 wird ja auch ein Beispiel .htaccess-Datei mitgeliefert. Hier mal ein kurzer Auszug:

# If you use the RealUrl extension, then you'll have to enable the next line.
# You will have to change this path if your TYPO3 installation is located
# in a subdirectory of the website root.
# 
# If you place this in httpd.conf, you cannot use this directive in any case!
#RewriteBase /

Außerdem habe ich bei mir mal testweise die Rewrite-Regel geändert und die index.php in die nicht existierende index1.php umbenannt. Ergebnis: 404 - die Datei wurde vom Apache nicht gefunden.