Zum Inhalt springen

RealURL Sprache - Ordner

Erstellt am 20. Februar 2010 · 11 Antworten · letzte Antwort am 23. Februar 2010

Tags: RealURL, Frage

WhiteShadow ·

Hi,

wie bekomme ich es hin, dass die Domain immer heißt: www.domain.de/de/seite.html

Derzeit ist es www.domain.de/seite.html

Also das /de/ fehlt. Wechsel ich die Sprache und gehe wieder auf Deutsch, dann ist das /de/ drinnen.

Das ist meine RealURL Konfiguration:

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(

        'init' => array(
		  'enableCHashCache' => true,
		  'appendMissingSlash' => 'ifNotFile,redirect',
		  'adminJumpToBackend' => true,
		  'enableUrlDecodeCache' => true,
		  'enableUrlEncodeCache' => true,
		  'emptyUrlReturnValue' => '/',
            'postVarSet_failureMode'=>'redirect_goodUpperDir',

        ),

    'redirects_regex' => array (

    

    ),

    'preVars' => array(

                        array(

                                'GETvar' => 'no_cache',

                                'valueMap' => array(

                                    'no_cache' => 1,

                                ),

                                'noMatch' => 'bypass',

                        ),

                         array(

                             'GETvar' => 'L',

                             'valueMap' => array(

                                                'de' => '0',
                                                'en' => '1',
                                                'ru' => '2',
                                                'cn' => '3',

                                        ),

                                        'valueDefault' => 'de', 

                                'noMatch' => 'bypass',

                        ),

                ),

     'pagePath' => array(

            'type' => 'user',

            'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',

            'spaceCharacter' => '-',

            'languageGetVar' => 'L',

            'expireDays' => 7,

            'rootpage_id' => 1,

        ),





      'postVarSets' => array(

            '_DEFAULT' => array(

                // news archive parameters

                'archive' => array(

                    array(

                        'GETvar' => 'tx_ttnews[year]' ,

                        ),

                    array(

                        'GETvar' => 'tx_ttnews[month]' ,

                            'valueMap' => array(

                            'january' => '01',

                            'february' => '02',

                            'march' => '03',

                            'april' => '04',

                            'may' => '05',

                            'june' => '06',

                            'july' => '07',

                            'august' => '08',

                            'september' => '09',

                            'october' => '10',

                            'november' => '11',

                            'december' => '12',

                            )

                        ),

                    ),

                // news pagebrowser

                'browse' => array(

                    array(

                        'GETvar' => 'tx_ttnews[pointer]',

                        ),

                    ),

                // news categories

                'select_category' => array (

                    array(

                        'GETvar' => 'tx_ttnews[cat]',

                        ),

                    ),

                // news articles and searchwords

                'article' => array(

                    array(

                        'GETvar' => 'tx_ttnews[tt_news]',

                        'lookUpTable' => array(

                            'table' => 'tt_news',

                            'id_field' => 'uid',

                            'alias_field' => 'title',

                            'addWhereClause' => ' AND NOT deleted',

                            'useUniqueCache' => 1,

                            'useUniqueCache_conf' => array(

                                'strtolower' => 1,

                                'spaceCharacter' => '-',

                                ),

                            ),

                        ),

                    array(

                        'GETvar' => 'tx_ttnews[swords]',

                        ),

                    ),

                ),             

            ),



      'fileName' => array(

            'defaultToHTMLsuffixOnPrev'=>1,

            'index' => array(

                'rss.xml' => array(

                    'keyValues' => array(

                        'type' => 100,

                    ),

                ),

                'rss091.xml' => array(

                    'keyValues' => array(

                        'type' => 101,

                    ),

                ),

                'rdf.xml' => array(

                    'keyValues' => array(

                        'type' => 102,

                    ),

                ),

                'atom.xml' => array(

                    'keyValues' => array(

                        'type' => 103,

                    ),

                ),

            ),

        ),

 );
karlchen ·

die Extension rlmp_language_detection sollte dir weiterhelfen, mit der wird die jeweilige Browsersprache abgefragt und dann zu de/en/ oder was auch immer weiter geleitet.

WhiteShadow ·

Die habe ich installiert, aber das klappt auch nicht. Erst wenn ich die Sprache wechsel bzw. auf die Flagge klicke, dann sind alle Domains mit de oder en, aber wenn ich die Url einfach so aufrufe www.domain.de dann ist halt kein de oder en drinnen.

Meine Konfiguration für rlmp ist:

plugin.tx_rlmplanguagedetection_pi1 {
        useOneTreeMethod = 1
        defaultLang = de
}
super-mario ·

hast du den Thread schon gelesen?
#67175

insbesondere der Teil .htaccess wird dein Problem sicher lösen

# Wenn keine Sprache gesetzt ist, wird eine Sprache gesetzt
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_URI} !^/de/(.*)$
+ RewriteCond %{REQUEST_URI} !^/en/(.*)$
+ RewriteRule ^(.*)$ /de/ [L,R=301]
WhiteShadow ·

Ok das habe ich mal in die .htaccess eingefügt und da bekomme ich prompt einen 500 Internal Server Error, nachdem ich die + entfernt habe funktioniert es. Wobei er aber bei der einen Domain sofort in ein Untermenü springt was mir schleiferhaft ist.

Als Standard ist ja auch de eingetragen. Kann ich das für eine Domain rausnehmen bzw. so bestimmen, dass dieser Code nur für bestimmte Domains gelten soll?

super-mario ·

ja die "+" müssen weg 😉

musste mal das versuchen.

#Wenn keine Sprache gesetzt ist, wird eine Sprache gesetzt
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^deineDomain.de/de/(.*)$
#RewriteCond %{REQUEST_URI} !^/en/(.*)$
RewriteRule ^(.*)$ deineDomain.de/de/ [L,R=301]

musste bisschen rumversuchen

Cretection ·

Das ist einfach konfigurier bar ohne Änderungen an der .htaccess. Wenn ich gleich vor meinem Notebook Sitze schicke ich dir die Lösung. Bis dahin bring deine .htaccess wieder in normal Zustand ;-)

Cretection ·
    'preVars' => array(
                        array(
                                'GETvar' => 'no_cache',
                                'valueMap' => array(
                                    'no_cache' => 1,
                                ),
                                'noMatch' => 'bypass',
                        ),
                         array(
                             'GETvar' => 'L',
                             'valueMap' => array(
						'de' => '0',                             
                                                'en' => '1',
                                                'fr' => '2',
                                        ),
                             'valueDefault' => 'de',
                        ),
                ),

Das sollte vollkommen ausreichen... Dann einmal den RealUrl Cache löschen!

Beim aufrufen der Domain sieht das dann so aus: www.domain.de/ sobald du den ersten Link klickst fügt sich /de dran.

Ich wende das So erfolgreich an. Wenn es nicht gib ein laut von dir :-)

/** Edit **/

Ich sehe gerade das du

'emptyUrlReturnValue' => '/',

ändere das in

'emptyUrlReturnValue' => 1,
WhiteShadow ·

Ok dann gebe ich mal einen laut von mir. Habe das geändert, den RealURL Cache gelöscht, aber keine Veränderung. Muss immer noch die Flagge anklicken, damit /de/ drinnen steht.

Cretection ·

Nach dem es nicht funktioniert bei dir habe ich mir die mühe gemacht es bei mir in meine Installation einzufügen zu testen.

So funktioniert es nicht:

'preVars' => array(

                        array(

                                'GETvar' => 'no_cache',

                                'valueMap' => array(

                                    'no_cache' => 1,

                                ),

                                'noMatch' => 'bypass',

                        ),

                         array(

                             'GETvar' => 'L',

                             'valueMap' => array(

                                                'de' => '0',
                                                'en' => '1',
                                                'ru' => '2',
                                                'cn' => '3',

                                        ),

                                        'valueDefault' => 'de',

                                'noMatch' => 'bypass',

                        ),

                ),

So funktioniert es:

'preVars' => array(

                        array(

                                'GETvar' => 'no_cache',

                                'valueMap' => array(

                                    'no_cache' => 1,

                                ),

                                'noMatch' => 'bypass',

                        ),

                         array(

                             'GETvar' => 'L',

                             'valueMap' => array(

                                                'de' => '0',
                                                'en' => '1',
                                                'ru' => '2',
                                                'cn' => '3',

                                        ),

                                        'valueDefault' => 'de',

                        ),

                ),

RealUrl hat sein eigenes Caching.

  • Ändere den oberen Teil mal.
    Installiere: aoe_realurlpath
    Gehe auf das "Info"-modul.
    Im dropdown wählst du "AOE Realurl Path Cache Infos"
    Gehe im Page-Tree auf deine root-seite
    Geb die Level an.
    und gehe dann auf "Clear all" und dannach auf "regenerate(FE-Calls)"

Wie gesagt in meinem Projekt läuft deine Konfig so.
Die AOE Realurl Path Cache Infos kann mehr. Aber hier würde sie nur verwändet um den RealUrl Cache zu löschen.

WhiteShadow ·

Cool danke jetzt hat es geklappt. Hatte den Teil geändert, aber dann gab es noch ein größeres Problem und nach der Installation der Extension klappt es.

Cretection ·

Noch ein kleiner Tipp die Extension die du nun verwändest ist noch viel mächtiger.

Um dies voll ausnutzen zu können ersetze deine 'pagePath' mit:

'pagePath' => array (
				 'type' => 'user',
				 'userFunc' => 'EXT:aoe_realurlpath/class.tx_aoerealurlpath_pagepath.php:&tx_aoerealurlpath_pagepath->main',
				 'spaceCharacter' => '-',
				 'languageGetVar' => 'L', 
				 'rootpage_id' => '1',
				 'segTitleFieldList'=>'alias,tx_aoerealurlpath_overridesegment,nav_title,title,subtitle',
			),

Wenn du das hinzugefügt hast kannst du in den Page Settings unter Extended das "override url path" & "eclude from middle of paths" & "override pathsegment(filename)" nutzen. Das bietet dir insgesamt mehr möglichkeiten als die einstellungen unter "General".

!!!Beachte: Wenn du das gesetzt hast ignoriert er die einstellungen unter generel. Diese könntest du ja peer TSconfig wegkonfigurieren.