Configuration RealURL

Ce tutoriel explique comment configurer RealURL pour un site multi-domaines et/ou un site multilingue.

Configuration multi-domaines

La configuration de RealURL dans le cas de domaines multiples m’a posé quelques soucis de configuration. Voici le problème puis la solution.

J’ai plusieurs domaines ( www.paroisse.ch,  marly.paroisse.ch, …) stockés dans un même arbre TYPO3. La première question qui se pose est de pouvoir accéder à ce « site » TYPO3 en utilisant les différents noms. La configuration se fait à la fois pour TYPO3 et pour le serveur Web Apache.

La configuration sous Apache consiste à énumérer les différents domaines devant être gérés.

Sous TYPO3, il s’agit d’assigner le ou les domaines (avec ou sans le « www » par exemple) à chaque racine de site.

Configuration d'Apache

<VirtualHost *>

ServerName www.paroisse.ch
ServerAlias marly.paroisse.ch
ServerAlias arconciel.paroisse.ch


</VirtualHost>

Configuration de TYPO3

En mode Web > List, pour chaque racine de site, ajouter des enregistrements de type « domain » au nœud.

Dans le Template TypoScript du site, au niveau du nœud CONFIGURATION :

config {
    ## RealURL with multiple domains and multiple roots
    no_cache = 0
    simulateStaticDocuments = 0
    tx_realurl_enable = 1
    baseURL = www.paroisse.ch
 
    ## Fix broken inter-domain links
    typolinkCheckRootline = 1
}

Puis, pour chaque domaine, créer un Template avec ce code :

config.baseURL = http://marly.paroisse.ch/

Il ne reste plus qu’à éditer la configuration de RealURL au niveau du serveur comme indiqué ci-dessous. Le tableau RootPID contient la liste des domaines de l’arbre avec pour chacun le PID de la page racine (les PID des nœuds de la première figure de cette page).

$RootPID = array(
        'www.paroisse.ch' => '17',
        'paroisse.ch' => '17',
        'www.arconciel.paroisse.ch' => '41',
        'arconciel.paroisse.ch' => '41',
        'www.bonnefontaine.paroisse.ch' => '46',
        'bonnefontaine.paroisse.ch' => '46',
        'www.ependes.paroisse.ch' => '4',
        'ependes.paroisse.ch' => '4',
        'www.marly.paroisse.ch' => '1',
        'marly.paroisse.ch' => '1',
        'www.praroman.paroisse.ch' => '50',
        'praroman.paroisse.ch' => '50',
        'www.treyvaux.paroisse.ch' => '51',
        'treyvaux.paroisse.ch' => '51',
);
 
$TYPO3_CONF_VARS['FE']['addRootLineFields'] .=
    ',tx_realurl_pathsegment,alias,nav_title,title';
 
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array();
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
        'init' => array(
                'enableCHashCache' => 1
                // disable enableUrlDecodeCache for multiple domains
                // as no root pid is caught and the system check to
                // see if correct page path is grabbed
                , 'enableUrlDecodeCache' => 0
                , 'enableUrlEncodeCache' => 0
                , 'appendMissingSlash' => 'ifNotFile'
                , 'respectSimulateStaticURLs' => 0
                , 'postVarSet_failureMode' => 'redirect_goodUpperDir'
        )
        , 'redirects'   => array()
        , 'preVars' => array(
                // stripped
        )
        , 'pagePath' => array(
                'type'                  => 'user'
                , 'userFunc'            =>
                      'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main'
                , 'spaceCharacter'      => '-'
                , 'languageGetVar'      => 'L'
                , 'rootpage_id'         =>
                      $RootPID[$_SERVER['HTTP_HOST']]
                , 'disablePathCache'    => 0
                , 'expireDays'          => 7
                , 'segTitleFieldList'   =>
                      'tx_realurl_pathsegment,alias,nav_title,title'
                , 'excludePageIds'      => null
        )
        , 'fixedPostVars'       => array()
      // stripped
);

Configuration multilingue

        'preVars' = array(
                array(
                        'GETvar'   = 'L',
                        'valueMap' = array(
                                'de' = '1',
                                'fr' = '2',
                                'it' = '3',
                        ),
                        'noMatch' = 'bypass',
                        //'valueDefault' = 'en',
                ),
        ),

En utilisant la configuration précédente, la langue par défaut ne sera pas préfixée dans l’URL. Si vous souhaitez forcer le préfixe de la langue, alors supprimez la ligne ’noMatch’ et décommentez celle avec ’valueDefault’.

Flattr