[TYPO3-german] Sprachumschaltung / Verhalten von RealURL nach Update

Birgit lists at berlin-typo3.de
Fri Sep 14 10:25:03 CEST 2018


Hallo Michael,

in der .htaccess werden lediglich die Domains reduziert auf die www Variante und http-Aufrufe umgeleitet auf https.

Es ist u.a. aus SEO Gründen besser, sich auf jewiels eine Variantte zu beschränken.

In deiner Konfiguration hast du auch nur die Varianten mit www durchdekliniert.

In deiner realurl_config hast du jweiles beide Varianten mit und ohne www.

>>> 
>>>   'mydomain.de' => 'def_mydomain',
>>>   'www.mydomain.de' => 'def_mydomain',
>>>   'mydomain.com' => 'def_mydomain',
>>>   'www.mydomain.com' => 'def_mydomain‘,

Danach aber nur noch die www-Varianten encoded und decoded:

>>>  '_DOMAINS' => [
>>>       'encode' => [
>>>           [
>>>               'GETvar' => 'L',
>>>               'value' => '',
>>>               'urlPrepend' => 'https://www.mydomain.de',
>>>               'useConfiguration' => 'www.mydomain.de',
>>>           ],
>>>           [
>>>               'GETvar' => 'L',
>>>               'value' => '0',
>>>               'urlPrepend' => 'https://www.mydomain.de',
>>>               'useConfiguration' => 'www.mydomain.de',
>>>           ],
>>>           [
>>>               'GETvar' => 'L',
>>>               'value' => '1',
>>>               'urlPrepend' => 'https://www.mydomain.com',
>>>               'useConfiguration' => 'www.mydomain.com',
>>>           ],
>>>       ],
>>>       'decode' => [
>>>           'www.mydomain.de' => [
>>>               'GETvars' => [
>>>                   'L' => '',
>>>               ],
>>>               'useConfiguration' => 'www.mydomain.de',
>>>           ],
>>>           'www.mydomain.de' => [
>>>               'GETvars' => [
>>>                   'L' => '0',
>>>               ],
>>>               'useConfiguration' => 'www.mydomain.de',
>>>           ],
>>>           'www.mydomain.com' => [
>>>               'GETvars' => [
>>>                   'L' => '1',
>>>               ],
>>>               'useConfiguration' => 'www.mydomain.com',
>>>           ],
>>>       ],


Da du auch in deinem TypoScript nur die www Variante hattest, habe ich diese für das Bsp. genommen.
Wenn du jeweils beide Domainvarianten ( also insgesamt dann 4 ) benutzen willst, musst du auch die Conditions im TypoScript für 4 Varianten bauen, denn dann gibt es auch 4 baseURLs.

Ich hatte geschrieben: zuerst die Condition mit Domains, danach die mit der L-Variable.
Ansonsten kommt es zum beschriebenen Fehler.

Richtig ist:
ZUERST Standardeinstellung ohne Condition 
(Kommentare gehören in separate Zeilen, sonst gibt es einen Fehler und das TS wird nicht weiter ausgeführt).

>> zuerst ohne Condition:
>> 
>>> config {
>>        linkVars = L(int)
>>        sys_language_uid = 0
>> // default Sprache
>>        sys_language_overlay = 1 
>> // oder andere Einstellung: https://docs.typo3.org/typo3cms/TyposcriptReference/8.7/Setup/Config/#sys-language-overlay
>>        sys_language_mode = content_fallback;0  
>> // oder andere Einstellung: https://docs.typo3.org/typo3cms/TyposcriptReference/8.7/Setup/Config/#sys-language-mode
>>> baseURL = https://www.mydomain.de/
>>> language = de
>>> locale_all = de_DE.utf8
>>> htmlTag_langKey = de-DE
>>> sys_language_uid = 0
>>> }



DANACH die Condiitons

In die Conditions gehören nur die Angaben, die von der Standard config abweichen.

ERSTE CONDITION: die Domains (greift dann, wenn kein GET-Parameter L=x vorhanden ist)

>> [globalString = HTTP_HOST= *mydomain.de]
>>> config {
>>> baseURL = https://www.mydomain.de/
>>> language = de
>>> locale_all = de_DE.utf8
>>> htmlTag_langKey = de-DE
>>> sys_language_uid = 0
>>> }
>> 
>> [globalString = HTTP_HOST= *mydomain.com]
>> config {
>>> baseURL = https://www.mydomain.com/
>>> language = en
>>> locale_all = en_US.UTF8
>>> htmlTag_langKey = en
>>> sys_language_uid = 1
>>> }
>> [global]


ZWEITE CONDITION: (überschreibt die erste Condition) – die L-Variable (greift beim Sprachwechsel im Sprachmenü und weist der „neuen Sprache“ die richtige Domain zu)

Erläuterung:

>>>  'preVars' => [
>>>           '0' => [
>>>               'GETvar' => 'L',
>>>               'valueMap' => [
>>>                   'de' => 0,
>>>                   'en' => 1,
>>>               ],
>>>               'noMatch' => 'bypass'
>>>           ],


Der Sprachparameter L wird in realUrl entfernt mit der Einstellung:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][‚domain.de']['preVars‘][0]['valueDefault'] = ‚de‘;
macht aus 
> https://www.mydomain.de/de/ wenn L=0  ->  https://www.mydomain.de/

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][‚domain.com']['preVars‘][0]['valueDefault'] = ‚en‘;
macht aus
> https://www.mydomain.com/en/ wenn L=1 -> https://www.mydomain.com/


Das betrifft aber nur die Default-Sprache der Daomin.
Wenn du im Sprachemnü die Sprache wechselst, kommst du dann aber immernoch auf:

> https://www.mydomain.de/en/ wenn L=1

> https://www.mydomain.com/de/ wenn L=0

Deswegen unterbindest du diese Versionen mit folg. Code:


> [globalVar = GP:L=0]
> config {
>  baseURL = https://www.mydomain.de/
>  language = de
>  locale_all = de_DE.utf8
>  htmlTag_langKey = de-DE
>  sys_language_uid = 0
> }
> 
> [globalVar = GP:L=1]
> config {
>  baseURL = https://www.mydomain.com/
>  language = en
>  locale_all = en_US.UTF8
>  htmlTag_langKey = en
>  sys_language_uid = 1
> 
> }
> [global]


macht aus
> https://www.mydomain.com/de/ wenn L=0 -> https://www.mydomain.de/
> https://www.mydomain.de/en/ wenn L=1 -> https://www.mydomain.com/


WICHTIG, damit beim Sprachwechsel die vorherige Domain (config.baseURL) nicht den Links vorangestellt wird:

>> config.absRefPrefix = /

Folgende Einstellungen im Backend spielen auch eine Rolle:

Auf der Root-Seite 
>>> 'rootpage_id' => 3

sollten die Domains als Datensätze eingetragen sein und die Rootseite muss gekennzeichnet sein:

Seiteneigenschaften -> Verhalten -> Als Anfang der Website benutzen
aktivieren

Dann ist im Seitenbaum im Backend ein Weltkugel-Icon vor der Seite.


Ich hoffe, das ist verständlich erklärt.

viele Grüße
Birgit


> Am 14.09.2018 um 08:37 schrieb Michael Ludwig <frozenyoghurt2010 at gmail.com>:
> 
> Moin moin, hallo Birgit,
> 
> danke für Deine Antwort. Ich habe das gleich noch am Dienstag umgesetzt,
> doch es funktioniert nicht so ganz.
> Jedoch habe ich auch nicht all Deine Vorschläge umgesetzt. Was ist bisher
> gemacht habe, ist das TypoScript Setup anzupassen.
> 
> Nun sieht mein TypoScript Setup so aus:
> 
> ********************************************************
> [globalVar = GP:L=0]
> config {
>  baseURL = https://www.mydomain.de/
>  language = de
>  locale_all = de_DE.utf8
>  htmlTag_langKey = de-DE
>  defaultGetVars {
>    L = 0
>  }
>  linkVars = L(int)
>  sys_language_uid = 0
>  sys_language_overlay = 0
>  sys_language_mode = content_fallback;0
> }
> 
> [globalVar = GP:L=1]
> config {
>  baseURL = https://www.mydomain.com/
>  language = en
>  locale_all = en_US.UTF8
>  htmlTag_langKey = en
>  defaultGetVars {
>    L = 1
>  }
>  linkVars = L(int)
>  sys_language_uid = 1
>  sys_language_overlay = 1
>  sys_language_mode = content_fallback;1
> }
> [global]
> *********************************************************
> 
> 
> Wenn ich unter das globalVar GPL0/1 allerdings diese Zeile platziere
> [globalString = HTTP_HOST= *mydomain.de], dann wird das CSS nicht mehr
> geladen.
> Deswegen habe ich das wieder rausgenommen.
> Was mich allerdings wundert, ist Dein Vorschlag zur .htaccess Datei. Wieso
> muss ich die anpassen, wenn früher alles damit wunderbar lief? Das leuchtet
> mir noch nicht ganz ein. ;-)
> 
> Viele Grüsse,
> Michael
> 
> 
> 
> 
> Am Di., 11. Sep. 2018 um 12:19 Uhr schrieb Birgit <lists at berlin-typo3.de>:
> 
>> Hallo Michael,
>> 
>> die realurl_config siehtt gut aus.
>> 
>> TypoScript:
>> 
>> zuerst ohne Condition:
>> 
>>> config {
>>        linkVars = L(int)
>>        sys_language_uid = 0  // default Sprache
>>        sys_language_overlay = 1 // oder andere Einstellung
>>        sys_language_mode = content_fallback;0  // oder andere Einstellung
>>> baseURL = https://www.mydomain.de/
>>> language = de
>>> locale_all = de_DE.utf8
>>> htmlTag_langKey = de-DE
>>> sys_language_uid = 0
>>> defaultGetVars {
>>>   L = 0
>>> }
>>> }
>> 
>> 
>> Ich setze zusätzlich die Domains als Condition, danach erst die
>> Sprachvariable:
>> 
>> [globalString = HTTP_HOST= *mydomain.de]
>>> config {
>>> baseURL = https://www.mydomain.de/
>>> language = de
>>> locale_all = de_DE.utf8
>>> htmlTag_langKey = de-DE
>>> sys_language_uid = 0
>>> }
>> 
>> [globalString = HTTP_HOST= *mydomain.com]
>> config {
>>> baseURL = https://www.mydomain.com/
>>> language = en
>>> locale_all = en_US.UTF8
>>> htmlTag_langKey = en
>>> sys_language_uid = 1
>>> }
>> [global]
>> 
>> /*
>> Fehlerin deinem Code:
>> 1. GPL=0 fehlt
>> 2. config fehlt bei GPL=1
>> 3. defaultGetVars fehlt - entweder in beiden Domains setzen oder am besten
>> gar nicht, momentan gilt bei dir defaultGetVars L=1 in beiden Domains und
>> beiden Sprachen und verursacht evtl. den Fehler
>> */
>> 
>>> [globalVar = GP:L=0]
>> 
>>> config {
>>> baseURL = https://www.mydomain.de/
>>> language = de
>>> locale_all = de_DE.utf8
>>> htmlTag_langKey = de-DE
>>> sys_language_uid = 0
>>> }
>> 
>>> [globalVar = GP:L=1]
>> config {
>>> baseURL = https://www.mydomain.com/
>>> language = en
>>> locale_all = en_US.UTF8
>>> htmlTag_langKey = en
>>> sys_language_uid = 1
>>> 
>>> }
>> [global]
>> 
>> am Ende:
>> 
>> # notwendig für Sprachwechsel im Sprachmenü, damit die Domains geswitcht
>> werden:
>> config.absRefPrefix = /
>> 
>> 
>> # In der .htaccess alle Domains ohne www umleiten auf Domains mit www:
>> 
>> RewriteCond %{HTTP_HOST} ^mydomain.de$ [NC]
>> RewriteRule ^(.*) https://www.mydomain.de/$1 [L,R=301]
>> 
>> RewriteCond %{HTTP_HOST} ^mydomain.com$ [NC]
>> RewriteRule ^(.*) https://www.mydomain.com/$1 [L,R=301]
>> 
>> # https auf https umleiten:
>> RewriteCond %{SERVER_PORT} !^443$
>> RewriteRule (.*) https://%{HTTP_HOST}/$1 [L]
>> 
>> 
>> zum Schluss:
>> 
>> /typo3temp löschen
>> Im Install-Tool alle Caches und Opcache löschen
>> Im Backend im realUrl Modul alle URLs löschen
>> 
>> 
>> Wenn du weiterhin Probleme hast:
>> Wie sieht dein Sprachwechsel-Menü aus?
>> 
>> 
>> 
>> viele Grüße
>> Birgit
>> 
>> 
>>> Am 11.09.2018 um 11:45 schrieb Michael Ludwig <
>> frozenyoghurt2010 at gmail.com>:
>>> 
>>> *Hallo Birgit, hallo Christian,*
>>> 
>>> vielen Dank für Eure Antworten. Ich habe die RealURL-Konfiguration ein
>>> wenig aufgeräumt und soweit ich beurteilen kann möglichst auf das
>>> wesentliche reduziert.
>>> Auch die zwei im Github-Wiki von Dmitry Dulepov beschrieben Möglichkeiten
>>> zur Leerung des RealURL-Caches habe ich in den Planer eingebaut und führe
>>> sie jedes Mal nach einer Änderung in der realurl_conf.php aus, sowie die
>>> TYPO3-Caches löschen.
>>> Der Fehler bleibt beständig, leider.
>>> 
>>> Folgende RealURL-Konfiguration ist derzeit bei mir aktiv, ich poste die
>>> hier mal vollumfänglich und hoffe, dass ich damit nicht zuviel digitalen
>>> Unrat erzeuge.
>>> 
>>> ***********************************************************
>>> <?php
>>> $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = [
>>> 
>>>   'def_mydomain' => [
>>>       'init' => [
>>>           'enableCHashCache' => 1,
>>>           'enableUrlDecodeCache' => 1,
>>>           'enableUrlEncodeCache' => 1,
>>>           'enableDomainLookup' => 1,
>>>           'appendMissingSlash' => 'ifNotFile',
>>>           'adminJumpToBackend' => 1,
>>>           'reapplyAbsRefPrefix' => 1,
>>>           'respectSimulateStaticURLs' => 0,
>>>           'emptyUrlReturnValue' => '/',
>>>           'postVarSet_failureMode' => 'redirect_goodUpperDir',
>>>       ],
>>>       'redirects' => [],
>>>       'redirects_regex' => [],
>>>       'preVars' => [
>>>           '0' => [
>>>               'GETvar' => 'L',
>>>               'valueMap' => [
>>>                   'de' => 0,
>>>                   'en' => 1,
>>>               ],
>>>               'noMatch' => 'bypass'
>>>           ],
>>>           [
>>>               'GETvar' => 'no_cache',
>>>               'valueMap' => [
>>>                   'nc' => 1,
>>>               ],
>>>               'noMatch' => 'bypass',
>>>           ],
>>>       ],
>>>       'pagePath' => [
>>>           'type' => 'user',
>>>           'userFunc' =>
>>> 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
>>>           'segTitleFieldList' =>
>>> 'tx_realurl_pathsegment,alias,nav_title,title',
>>>           'spaceCharacter' => '-',
>>>           'languageGetVar' => 'L',
>>>           'expireDays' => 1,
>>>           'firstHitPathCache' => 1,
>>>           'disablePathCache' => 0,
>>>           'rootpage_id' => 3,
>>>       ],
>>>       'fixedPostVars' => [],
>>>       'postVarSets' => [],
>>>       'fileName' => [],
>>>   ],
>>> 
>>>   'mydomain.de' => 'def_mydomain',
>>>   'www.mydomain.de' => 'def_mydomain',
>>>   'mydomain.com' => 'def_mydomain',
>>>   'www.mydomain.com' => 'def_mydomain',
>>> 
>>>   '_DOMAINS' => [
>>>       'encode' => [
>>>           [
>>>               'GETvar' => 'L',
>>>               'value' => '',
>>>               'urlPrepend' => 'https://www.mydomain.de',
>>>               'useConfiguration' => 'www.mydomain.de',
>>>           ],
>>>           [
>>>               'GETvar' => 'L',
>>>               'value' => '0',
>>>               'urlPrepend' => 'https://www.mydomain.de',
>>>               'useConfiguration' => 'www.mydomain.de',
>>>           ],
>>>           [
>>>               'GETvar' => 'L',
>>>               'value' => '1',
>>>               'urlPrepend' => 'https://www.mydomain.com',
>>>               'useConfiguration' => 'www.mydomain.com',
>>>           ],
>>>       ],
>>>       'decode' => [
>>>           'www.mydomain.de' => [
>>>               'GETvars' => [
>>>                   'L' => '',
>>>               ],
>>>               'useConfiguration' => 'www.mydomain.de',
>>>           ],
>>>           'www.mydomain.de' => [
>>>               'GETvars' => [
>>>                   'L' => '0',
>>>               ],
>>>               'useConfiguration' => 'www.mydomain.de',
>>>           ],
>>>           'www.mydomain.com' => [
>>>               'GETvars' => [
>>>                   'L' => '1',
>>>               ],
>>>               'useConfiguration' => 'www.mydomain.com',
>>>           ],
>>>       ],
>>>   ],
>>> ];
>>> ?>
>>> ***********************************************************
>>> 
>>> 
>>> Ich habe meinen Domainnamen durch "mydomain" ersetzt.
>>> Das TypoScript Setup sieht so aus (das "defaultGetVars" ist für RealURL
>>> scheinbar ohne Auswirkung, mit und ohne probiert):
>>> 
>>> ***********************************************************
>>> config {
>>> baseURL = https://www.mydomain.de/
>>> language = de
>>> locale_all = de_DE.utf8
>>> htmlTag_langKey = de-DE
>>> sys_language_uid = 0
>>> defaultGetVars {
>>>   L = 0
>>> }
>>> }
>>> 
>>> [globalVar = GP:L=1]
>>> baseURL = https://www.mydomain.com/
>>> language = en
>>> locale_all = en_US.UTF8
>>> htmlTag_langKey = en
>>> sys_language_uid = 1
>>> }
>>> [global]
>>> ***********************************************************
>>> 
>>> 
>>> 
>>> Das ist die .htaccess-Datei, derzeit - zum testen - minimiert:
>>> 
>>> ***********************************************************
>>> <IfModule mod_rewrite.c>
>>> RewriteEngine On
>>> RewriteCond %{REQUEST_FILENAME} !-f
>>> RewriteCond %{REQUEST_FILENAME} !-d
>>> RewriteCond %{REQUEST_FILENAME} !-l
>>> RewriteRule .* index.php [L]
>>> </IfModule>
>>> ***********************************************************
>>> 
>>> 
>>> 
>>> Ich weiss nicht weiter, umso mehr hoffe ich, dass hier jemanden etwas
>> dazu
>>> einfallen könnte.
>>> 
>>> Viele Grüsse,
>>> Michael
>>> 
>>> 
>>> 
>>> 
>>> 
>>> Am Di., 11. Sep. 2018 um 09:30 Uhr schrieb Christian Welzel <
>>> gawain at camlann.de>:
>>> 
>>>> Am 10.09.18 um 16:58 schrieb Michael Ludwig:
>>>> 
>>>>>> Problem: Die Umschaltung der Sprachen Deutsch/Englisch funktionierte
>> vor
>>>>>> dem Update (extra noch im Vorfeld getestet) über die Domainendung.
>>>>>> Bedeutet: .de -> Deutsch und .com -> Englisch.
>>>> 
>>>> Wie man sowas konfiguriert, steht hier:
>>>> 
>>>> https://github.com/dmitryd/typo3-realurl/wiki/Language-Domains
>>>> 
>>>> 
>>>> --
>>>> MfG, Christian Welzel
>>>> 
>>>>  GPG-Key:     http://www.camlann.de/de/pgpkey.html
>>>>  Fingerprint: 4F50 19BF 3346 36A6 CFA9 DBDC C268 6D24 70A1 AD15
>>>> _______________________________________________
>>>> TYPO3-german mailing list
>>>> TYPO3-german at lists.typo3.org
>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>> _______________________________________________
>>> TYPO3-german mailing list
>>> TYPO3-german at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>> 
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list