Hallo zusammen,
manchmal lenkt ja Arbeit doch sehr vom hehren Streben nach der besseren Lösung ab. Ich bemühe mich derzeit, nach kurzer TYPO3 Abstinenz, 4.5.x Projekte reifer für die Zukunft (4.6/4.7) zu gestalten und gleichzeitig lieb gewonnene Unschönheiten zu beseitigen. Ich erstelle fast ausschließlich mehrsprachige Websites. Zu den aufgelaufenen Problemen zählen, neben etwas angestaubten Extensions, speziell Caching Issues. Woher diese rühren, erkennt man bei gezielter Beobachtung der Entwicklung des Caches nach einem „Clear all caches“.
Ein Beispiel (abgeschaltetes realUrl, da wird es deutlicher:sad:
2 Sprachen: default English (L=0), Deutsch (L=1). Start Seite (9) über Shortcut der Root Page.
Aufruf der Domain: http://mydom.tld => (über Redirect 301) => http://www.mydom.tld erzeugt 4 fast identische Cache Einträge (der vorherige Redirect erspart hier eine weitere Verdoppelung)
Abhängig von der Zahl der Conditions (Browserweiche, Logged-In User/Group...) können dies beliebig mehr werden. Dies ist expected behaviour und kann durch etwas Nachdenken reduziert werden (brauche ich eine Weiche für „print“?) - kurz gesagt: Conditions reduzieren und/oder ausmisten.
Was aber als Ärgernis bleibt, ist folgendes:
Bedingt durch meinen aktuellen Language Switch auf der Seite (tt_news tauglich) setzt dieser entweder die Sprachvariable L=0 (default) oder L=1 (Deutsch). Dies führt direkt zu Duplicate Content, den es zu vermeiden gilt, sowie zu überflüssigem Caching. Richtiger wäre wohl, dass für die Default Sprache gar kein Language Parameter gesetzt würde. Aber dann bekomme ich Ärger mit tt_news 3.1 und/oder realUrl. Und tt_news 3.1 bringt zusätzlich sprachliche Probleme, die bei 3.01 bereits (manuell) rausgepatched waren (next/prev Page in Single View lokalisiert den Titel nicht mehr und sortiert gem. default Language).
Die realUrl Probleme kann man in den Griff bekommen, wenn man mit folgender Struktur leben kann:
also Sprachparameter nur bei nicht-default Sprache.
Dies widerspräche aber meinen Absichten zur .eu Domain, sie soll gerade nicht sprachlich priorisieren, benötigt somit:
In der Realität sind es mehr als nur 2 Sprachen. Sprachtypische Domains scheiden somit aus (auch wenn teilweise vorhanden:sad:
Jetzt sehe ich zwei theoretische Ansätze:
1) Die Rewrite Engine läuft sowieso schon. Wird die Domain (also ohne weitere Url Parameter) aufgerufen, so mache Redirect auf http://www.example.eu/en/ (oder gar: http://www.example.eu/en/home/, denn die Seite gehört eigentlich in den Cache). Diese Lösung hätte den Charme, TYPO3 dabei komplett raus zu halten. Ich bin mir jedoch nicht sicher, ob ich mir damit selbst ins Knie schieße. Hat da jemand Erfahrungen? Mögliche Probleme würde ich bei ssl, feeds etc. sehen.
2) Die ganzen Nickeligkeiten mit tt_news und realUrl angehen. Mein gewünschtes Url Schema scheint bei realUrl ausschließlich mit folgender Konfiguration zu klappen:
Code:
'preVars' => array(
'0' => array(
'GETvar' => 'no_cache',
'valueMap' => array(
'nc' => 1,
),
'noMatch' => 'bypass',
),
'1' => array(
'GETvar' => 'L',
'valueMap' => array(
'en' => '0',
'de' => '1',
),
// 'noMatch' => 'bypass',
'valueDefault' => 'en',
),
),
Gibt es irgend eine alternative Variante für realUrl, die immer (zwingend) eine Sprachvariable in der Url führt? Macht hierfür der Bereich 'redirects_regex' oder 'redirects' in realUrl vielleicht Sinn? Ist leider nur sehr rudimentär dokumentiert. Etwas unschön ist auch die fehlende Transparenz zwischen Redirects durch realurl und direkten Redirects durch den Apachen (also vhost settings oder, für Hobbyisten, auch .htaccess). Letztere bieten natürlich gewaltige Performancevorteile gegenüber allen TYPO3-internen Mechanismen.
Wie geht Ihr damit um?
Viele Grüße,
Thomas
Lesezeichen