Zum Inhalt springen

RealUrl .html nicht bei allen Links

Erstellt am 7. Oktober 2007 · 12 Antworten · letzte Antwort am 17. Mai 2010

Tags: Frage

Aldarin ·

Hey,

ich hätte eine Frage.
Kann ich gewisse Domains von RealURL anders behandeln lassen?

Das Problem ist das auf einer Domain mehrere Sprachen laufen. Daher wird die Domain bei mir aktuell so zusammengesetzt:
Domain.com/de.html
Domain.com/en.html

Wie kann ich das machen, da ich das persönlich hübscher finde, das die URLs nun so aussehen:
Domain.com/de/
Domain.com/en/

Jedoch alle anderen Links so wie bisher aussehen:
Domain.com/de/login.html
Domain.com/en/login.html

Grüße,
Aldarin

jousch ·

Das ganze geht mit realUrl.

Hier findest du interessante Beispiele dazu: http://wiki.typo3.org/index.php/Realurl

Die Sprachen-Variablen müssen in den preVars definiert werden von realUrl in der localconf.php 😉

In der folgenden Konfiguration verwende ich auch ".html" am Ende:

// realUrl-Konfiguration

$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['EXTCONF']['realurl']['_DEFAULT'] = array(
 'init' => array(
  'enableCHashCache' => 1,
  'enableUrlDecodeCache' => 1,
  'enableUrlEncodeHash' => 1,
 ),
 'rewrite' => array(),
 

 'preVars' => array(
   //NO-Cache START
   array(
      'GETvar' => 'no_cache',
      'valueMap' => array(
        'no_cache' => 1,
        ),
      'noMatch' => 'bypass',
      ),
 // No-Cache ENDE
 ),

 'pagePath' => array(
  'type' => 'user',
  'userFunc' =>
   'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
  'spaceCharacter' => '-',
  'languageGetVar' => 'L',
  'expireDays' => 10,
  'disablePathCache' => '1',
  'rootpage_id' => '1' // WICHTIG: Hier muss deine root ID eingetragen werden.
 ),
 '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]',
    ),
    array (
     'GETvar' => 'tx_ttnews[pL]',
    ),
    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' => '-',
      ),
     ),
    ),
   ),
   // Termindatenbank Umsetzung tx_keyac
    'kalender' =>array (
    array (
     'GETvar' => 'tx_keyac_pi1[showCal]',
     'valueMap' => array(
        'zeige' => 1,
     ),
     'noMatch' => 'bypass',
    ),
    array (
     'GETvar' => 'tx_keyac_pi1[year]',
     'valueMap' => array(
        '2007' => 2007,
        '2008' => 2008,
        '2009' => 2009,
        '2010' => 2010,
        '2011' => 2011,
        '2012' => 2012,
        '2013' => 2013,
        '2014' => 2014,
        '2015' => 2015,
        '2016' => 2016,
        '2017' => 2017,
     ),
     'noMatch' => 'bypass',
     
    ),
    array (
     'GETvar' => 'tx_keyac_pi1[backPid]',
     'valueMap' => array(
     'start' => 1,
     ),
     'noMatch'  => 'bypass',
     'valueDefault' => '73',
     
    ),
    array (
     'GETvar' => 'tx_keyac_pi1[month]',
     'valueMap' => array(
        'jan' => 1,
        'feb' => 2,
        'mae' => 3,
        'apr' => 4,
        'mai' => 5,
        'jun' => 6,
        'jul' => 7,
        'aug' => 8,
        'sep' => 9,
        'okt' => 10,
        'nov' => 11,
        'dez' => 12,
     ),
     'noMatch' => 'bypass',
     
    ),
    array (
     'GETvar' => 'tx_keyac_pi1[showUid]',
     'lookUpTable' => array(
          'table'                  => 'tx_keyac_dates',
          'id_field'               => 'uid',
          'alias_field'           => 'title',
          'addWhereClause' => ' AND NOT deleted ',
          'useUniqueCache'  => 1,
          'useUniqueCache_conf' => array(
             'strtolower'   => 1,
             'spaceCharacter' => '-',
             'maxLength' => 15,
          ),
     ),
    ),
   ),
   // Termindatenbank Umsetzung Ende
  // jm_gallery Einstellungen
            'galerie' => array (
                array (
                    'GETvar' => 'tx_jmgallery_pi1[albumUid]',
                    'lookUpTable' => array ( 
                        'table' => 'tx_jmgallery_albums',
                        'id_field' => 'uid',
                        'alias_field' => 'name',
                        'addWhereClause' => ' AND NOT deleted',
                        'useUniqueCache' => '1',
                        'useUniqueCache_conf' => array (
                            'strtolower' => '1',
                            'spaceCharacter' => '-',
                        ),
                    ),
                ),
            array(
                    'GETvar' => 'tx_jmgallery_pi1[page]',
                    'valueMap' => array(
                    'alle' => 0,
                    'seite1' => 1,
                    'seite2' => 2,
                    'seite3' => 3,
                    'seite4' => 4,
                    'seite5' => 5,
                    'seite6' => 6,
                    'seite7' => 7,
                    'seite8' => 8,
                    'seite9' => 9,
                    'seite10' => 10,
                    'seite11' => 11,
                    'seite12' => 12,
                    'seite13' => 13,
                    'seite14' => 14,
                    'seite15' => 15,
                    'seite16' => 16,
                    'seite17' => 17,
                    'seite18' => 18,
                    'seite19' => 19,
                    'seite20' => 20,
                    ),
                    'noMatch' => 'bypass',
            ),
            ),

            'bild' => array(
                array (
                    'GETvar' => 'tx_jmgallery_pi1[imageUid]',
                    'lookUpTable' => array (
                        'table' => 'tx_jmgallery_images',
                        'id_field' => 'uid',
                        'alias_field' => 'caption',
                        'useUniqueCache' => '1',
                        'useUniqueCache_conf' => array (
                             'strtolower' => '1',
                        ),
                    ),
                ),
            ),
   // Gästebuch ?tx_veguestbook_pi1[pointer]=0
   'seite' => array (
     array (
                       'GETvar' => 'tx_veguestbook_pi1[pointer]',
                          'valueMap' => array(),
      )
   ),
   // Gästebuch Ende
   
   



  ),
 ),
);
Aldarin ·

Ja, soweit funktioniert es ja auch mit Realurl, mich stört halt nur das meine Eingangsurls schlecht aussehen weil an wenn nur die Sprachvariable übergeben wird, gibts eben Links wie
Domain.com/de.html
Mit einer Unterseite funktionierts ja. Dann sieht das dementsprechend aus:
Domain.com/de/login.html

Ich hätte halt lieber das die Sprachvariable immer mit nem Slash enden soll.
Sprich wenn keine weitere Seite aufgerufen wird, solls auch so aussehen:
Domain.com/de/
und
Domain.com/de/login.html soll bleiben.

Hoffe ich konnt meine Frage diesmal klarer verdeutlichen.

Also das dieser Abschnitt für das HTML am Ende schuld ist, ist klar.

'fileName' => array (
  'defaultToHTMLsuffixOnPrev' => 1,
  'index' => array(
   'page.html' => array(
    'keyValues' => array (
     'type' => 1,
    ),
   ),
  ),
 ),

Jedoch kann ich nur das "defaultToHTMLsuffixOnPrev" auf 0 setzen aber dann hab ich das .html überall nicht mehr. ich will aber nur bei den Sprachindikatoren kein .html.

Grüße,
Aldarin

Aldarin ·

Also ich habs schon bei einigen Webseiten gesehen, aber halt noch keine konkrete Anleitung. Jedenfalls das was ich gefunden hatte hat bei mir nichts oder nur eine negative Wirkung bezweckt.

Ich bastel aktuell selber an einer Idee.

Grüße,
Aldarin

zappzarapp ·

So sieht das bei mir aus mit Deutsch/Englisch.

...
'preVars' => array(
	array(
		'GETvar' => 'L',
		'valueMap' => array(
			'de' => '0',
			'en' => '1',
			
		),
		'valueDefault' => 'de',
	),
....

für mehr Sprachen müsste man dann eben noch 'fr'=>2 etc. hinzufügen.

Aldarin ·

Ja, soweit klar... so siehts auch bei mir aus.

Es geht jedoch um die Erstellung der URL.

Multilingual mit passender Verkapselung der Language-ID haben wir ja. Jedoch nicht die Unterscheidung das dort kein .html hinten dran soll.

lorrey ·

... hat jemand mittlerweile hierzu eine Lösung gefunden?!?

Selbst bei neuster realurl version ist das verhalten noch da - könnte/sollte man meiner Meinung nach Standardmässig so machen (www.test.de/de)...

Danke!

SNaKeMe ·

Wieso benutzt ihr nicht die Funktion "Alias" (zu finden unter Seite bearbeiten) auf der entsprechenden Seite? Bei mir hab ich es so umgesetzt. Hatte ein ähnliches Problem mit meinen Menüs.

mfg SNaKeMe

Aldarin ·

Und wie meinst das nun mit den Alias?
Schließlich kann ich zwar im Alias definieren was ich als alternativen URL-Namen angeben will... aber mein Problem würde damit denke ich nicht gelöst werden.

Aktuell nutze ich überhaupt keinen Alias. Diese werden automatisch anhand des übersetzten Seitentitels generiert. de bzw. en stellen zudem die Language-Variable dar. Deswegen weiß ich grad noch nicht so ganz wie das ganze (wie oben beschrieben) hinhauen könnte.

Ich mein es funktioniert ja auch ganz gut so wie es jetzt läuft (http://www.visionworkz.net) aber es wäre halt noch nen bissel schöner wenns so läuft wie oben gezeigt.

Grüße,
Aldarin

thomax ·

Hallo,

auch ich stehe vor dem im ersten Beitrag genannten Problem. Gibt es nach so vielen Jahren inzwischen Lösungsansätze oder ist das quasi unmöglich?

Gruß & Danke
thomax

mort ·

also wollt ihr quasi für einige spezielle Seiten die Endung .html nicht anhängen?!

Das würde meiner Meinung nach mit dem Attribut "noHTMLsuffixList" funktionieren. Hier mal testweise für die Seiten "de" und "en":

[...]
	'fileName' => array (
		'defaultToHTMLsuffixOnPrev' => true,
		'noHTMLsuffixList' => 'de,en',
		'index' => array(
			'page.html' => array(
				'keyValues' => array (
					'type' => 1,
				)
			),

			'_DEFAULT' => array(
				'keyValues' => array(
				)
			),
		),
	),

[...]