CoolURI - page not found handling - mehrere Domains [Gelöst]

  • icke_der_tolga icke_der_...
    Padawan
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    15. 03. 2012, 12:17

    Hallo,

    ich verwende Typo3 4.6.4, CoolURI und templavoila. Ich habe zwei Webseiten unter einer Typo3-Installation mit zwei unterschiedlichen domains (www.domain1.de und http://www.domain2.de) installiert. Jetzt möchte ich, dass das page not found handling von CoolURI je nach URL auf eine andere PID verweist. Folgendes habe ich versucht:

    Als erstes habe ich diesen Code in die localconf.php eingetragen:

    1. $domain = $_SERVER['HTTP_HOST'];
    2.  
    3. if( $domain == "www.domain1.de" ) {
    4. function user_checkdomain1()
    5. {
    6. return true;
    7. }
    8. function user_checkdomain2()
    9. {
    10. return false;
    11. }
    12. }
    13.  
    14. if( $domain == "www.domain2.de" ) {
    15. function user_checkdomain1()
    16. {
    17. return false;
    18. }
    19. function user_checkdomain2()
    20. {
    21. return true;
    22. }
    23. }

    Dann habe ich in de CoolURIconf.xml folgendes eingetragen:

    1. <pagenotfound>
    2. <status>HTTP/1.0 404 Not Found</status>
    3. <behavior type="redirect"><![CDATA[index.php?id=51]]></behavior>
    4. </pagenotfound>

    Auf der PID 51 habe ich ein Template eingefügt mit folgendem Typoscript:

    1. # Domain 1
    2. [userFunc = user_checkdomain1()]
    3. config.additionalHeaders = Location: http://www.domain1.de/index.php?id=172
    4. [end]
    5.  
    6. # Domain 2
    7. [userFunc = user_checkdomain2()]
    8. config.additionalHeaders = Location: http://www.domain2.de/index.php?id=173
    9. [end]

    Das funktioniert aber nicht :-( Hat wer eine Ahnung woran es liegen könnte?

    Beste Grüße,
    Tolga


  • 1
  • igorshmigor igorshmig...
    Jedi-Ratsmitglied
    0 x
    941 Beiträge
    0 Hilfreiche Beiträge
    15. 03. 2012, 13:06

    Was passiert denn, wenn Du versuchst, http://www.domain1.de/index.php?id=51 direkt aufzurufen?

  • icke_der_tolga icke_der_...
    Padawan
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    15. 03. 2012, 14:17

    Wenn ich http://www.domain1.de/index.php?id=51 aufrufe, kommt die Seite 51 und es findet keine Umleitung statt. Wenn ich http://www.domain2.de/index.php?id=51 aufrufe wird auf http://www.domain2.de weitergeleitet (aber nicht auf die PID, auf die ich möchte).

  • igorshmigor igorshmig...
    Jedi-Ratsmitglied
    0 x
    941 Beiträge
    0 Hilfreiche Beiträge
    15. 03. 2012, 15:38

    Arbeitest Du in einer Entwicklungsumgebung? Hast Du mal mit so etwas wie

    1. if( $domain == "www.domain1.de" ) {
    2. function user_checkdomain1()
    3. {
    4. die('www.domain1.de > user_checkdomain1, '.$_SERVER['HTTP_HOST']);
    5. return true;
    6. }
    7. function user_checkdomain2()
    8. {
    9. die('www.domain1.de > user_checkdomain2, '.$_SERVER['HTTP_HOST']);
    10. return false;
    11. }
    12. }

    versucht, herauszufinden, ob tatsächlich die gewünschte Funktion ausgeführt wird?
    Wenn ja, dann wird config.additionalHeaders vielleicht an anderer Stelle wieder vom TypoScript mit einem anderen Wert überschrieben?
    Warum leitest Du nicht direkt mit PHP weiter? Z.B. so:
    1. $domain = $_SERVER['HTTP_HOST'];
    2. switch ($domain){
    3. case "www.domain1.de":
    4. header('Location: http://www.domain1.de/index.php?id=172');
    5. break;
    6. case "www.domain2.de":
    7. header('Location: http://www.domain2.de/index.php?id=173');
    8. break;
    9. }

    1. [userFunc = user_checkdomain()]
    2. # emptyness
    3. [global]

    statt einer userFunc Condition könntest Du dann natürlich auch ein USER_INT-Objekt verwenden.

  • icke_der_tolga icke_der_...
    Padawan
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    19. 03. 2012, 13:09

    So, hier meine Lösung für eine individuelle Fehlerseitenweiterlung für mehrere Webseiten unter einer Typo3-Installation. Ob es die schönste Lösung ist, sei dahingestellt, aber es funktionert. Nach <?php in der localconf.php folgende Zeilein einfügen:

    1. $domainabfrage = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    2.  
    3. switch ($domainabfrage){
    4. case "www.domain2.de/index.php?id=51":
    5. header('Location: http://www.domain2.de/fehlerseite');
    6. break;
    7. }

    In der CoolUriConf.xml an die entsprechende Stelle folgenden Code einfügen. Es ist hierbei wichtig, dass man nicht den absoluten Pfad angibt, ansonsten haben wir bei der Domainabfrage Probleme. Ansonsten sei noch erwähnt, dass unter http://www.domain1.de die PID 51 liegt. Zum Verständnis: Im Prinzip leitet die CoolUriConf.xml direkt zu der PID 51 weiter; da aber unter http://www.domain2.de keine PID 51 existiert wird nicht zu http://www.domain1.de/index.php?id=51 weitergeleitet, sondern zu der Startseite von http://www.domain2.de. Deshalb haben wir den Switch in die localconf.php eingebaut:

    1. <pagenotfound>
    2. <status>HTTP/1.0 404 Not Found</status>
    3. <behavior type="redirect"><![CDATA[/index.php?id=51]]></behavior>
    4. </pagenotfound>

    Wer jetzt auch noch innerhalb einer Webseiteninstallation eine Sprachenabfrage machen möchte, der/die erstellt auf der entsprechenden Fehlerseite ein Template und arbeitet da die Schritte von http://www.typo3.net/forum/beitraege/mehrsprachigkeit/103964/ ein.

    Endlich. Dank an igorshnigor auch für die Hinweise.
    Tolga

  • 1