Exemple de configuration de realurl sous TYPO3
Sans forcément refaire un article en repartant de zéro pour vous expliquer comment mettre en place realurl, je vous propose ici un exemple de fichier de configuration de realurl que vous pouvez mettre en place. Cette exemple se présente sous la forme du PHP à placer dans le fichier de configuration de realurl. Dans ce fichier, j’ai choisi de faire une configuration assez détaillée dans laquelle j’externalise chaque paramètre. Cette configuration gère entre autre le multidomaine, le multilinguisme, ainsi que tt_news. Cependant, en terme d’optimisation (si nécessaire), il est plus intéressant de sérialiser les choses (et du coup de perdre le côté dynamique de cette configuration).
Dans les premières lignes de ce fichier on retrouve en commentaire un bref récapitulatif des choses à faire pour mettre en place realurl (configuration apache et typoscript). Dans un deuxième temps, il est nécessaire de renseigner le « defaultRootPageId » qui détermine l’ID de la page d’accueil par défaut de votre site. Si votre site est multidomaine, il est nécessaire de remplir le tableau « domains » comme indiqué dans l’exemple du fichier.
<?php
/***************************************************************
* Copyright notice
*
* (c) 2009 Yohann CERDAN <cerdanyohann@yahoo.fr>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************
//************************************** Configuration TS de realurl
// Disable static document simulation
config.simulateStaticDocuments = 0
// Prefix anchors
config.prefixLocalAnchors = all
// baseURL
config.baseURL = http://www.mysite.com/
[hostname = www.mysite.com]
config.baseURL = http://www.mysite.com/
[global]
// Enable RealURL
config.tx_realurl_enable = 1
//************************************** Nettoyage manuel des urls stockées si besoin (requêtes SQL)
TRUNCATE `tx_realurl_chashcache`;
TRUNCATE `tx_realurl_pathcache`;
TRUNCATE `tx_realurl_uniqalias`;
TRUNCATE `tx_realurl_urldecodecache`;
TRUNCATE `tx_realurl_urlencodecache`;
UPDATE `pages` SET `tx_realurl_pathsegment` = '';
//************************************** .htaccess à la racine du site
RewriteEngine On
RewriteRule ^/typo3$ - [L]
RewriteRule ^/typo3/.*$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* /index.php
//************************************** Multi-domaines
- Créer l'enregistrement de type domaine dans l'arbo
- Renseigner domains en indiquant le domaine et le root id
**/
//************************************** Configuration des domaines/pages
// ID de la rootpage par defaut
$defaultRootPageId = 6;
// En cas de multi-domaines: liste des domaines => id de page root (voir exemple)
$domains = array (
// 'www.mysite.com' => 12,
// 'www.mysite2.com' => 16,
);
//************************************** Configuration de la reecriture
// Création de la config par défaut
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array ('_DEFAULT'=>array());
// Initialisation
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['init'] = array (
'enableCHashCache' => true,
'appendMissingSlash' => 'ifNotFile,redirect',
'adminJumpToBackend' => true,
'enableUrlDecodeCache' => true,
'enableUrlEncodeCache' => true,
'emptyUrlReturnValue' => '/',
'useCHashCache' => 1,
'postVarSet_failureMode' => 'redirect_goodUpperDir',
'doNotRawUrlEncodeParameterNames' => 1,
'enableCHashCache' => 1,
'respectSimulateStaticURLs' => 1
);
// Redirections
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['redirects'] = array ();
// Prevars
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['preVars'] = array (
// No cache
array(
'GETvar' => 'no_cache',
'valueMap' => array(
'no_cache' => 1,
),
'noMatch' => 'bypass',
),
// Langue
array(
'GETvar' => 'L',
'valueMap' => array(
'fr' => '0',
'en' => '1',
),
'noMatch' => 'bypass',
)
);
// Méthode de transformation
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['pagePath'] = array (
'type' => 'user',
'rootpage_id' => $defaultRootPageId,
'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
'spaceCharacter' => '-',
'languageGetVar' => 'L',
'disablePathCache' => 0,
'expireDays' => 3,
'segTitleFieldList' => 'tx_realurl_pathsegment,alias,nav_title,title',
'excludePageIds' => null,
'autoUpdatePathCache' => true
);
// Fixed post variables
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['fixedPostVars'] = array ();
// Post variables
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['postVarSets'] = array (
'_DEFAULT' => array(
// Tt_news archives
'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',
)
),
),
// Tt_news archives pagebrowser
'newspage' => array(
array(
'GETvar' => 'tx_ttnews[pointer]',
),
),
'newsyear' => array(
array(
'GETvar' => 'tx_ttnews[calendarYear]',
),
),
// Tt_news categories
'newscat' => array (
array(
'GETvar' => 'tx_ttnews[cat]',
),
),
// tt_news articles
'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
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['fileName'] = array (
'defaultToHTMLsuffixOnPrev' => 0,
'acceptHTMLsuffix' => 1
);
// Configuration des autres domaines
if (count($domains)>0) {
foreach ($domains as $domainKey=>$domainVal) {
$TYPO3_CONF_VARS['EXTCONF']['realurl'][$domainKey] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];
$TYPO3_CONF_VARS['EXTCONF']['realurl'][$domainKey]['pagePath']['rootpage_id'] = $domainVal;
}
}
?>
Pour la copier, utilisez le bouton « copy to clipboard » et créez un fichier contenant le code PHP. Vous devrez ensuite renseigner dans le backend et dans le gestionnaire d’extension le chemin de ce fichier.
N’hésitez surtout pas à me faire des retours sur cette configuration afin de l’améliorer au fil du temps.



30 novembre 2009 - 22 h 11 min
Rien à dire sur la conf RealUrl.
cela me semble efficace.
surtout la boucle permettant de configurer les différents domaines.
Attention toutefois : avec ceci les mots clés seront les mêmes utilisés sur tous les sites.
cela pourrai ne pas être un comportement attendu.
par contre.
la publication en Copyright : (c) 2009 Yohann CERDAN
Me semble aller a l’encontre de la GPL de TYPO3 et de realUrl.
qui plus est cela empêche tout simplement de la copier coller et de l’utiliser dans nos projets.
Pourquoi ne pas avoir simplement copier coller le commentaire qui se trouve en entête des extensions crées via le KickStarter ?
30 novembre 2009 - 22 h 27 min
Pour la remarque pour les différents domaine, oui, c’est le risque. Mais bien souvent d’une arbo à une autre (donc d’un domaine à un autre) on veut que le comportement soit le même. Sinon, comme tu le penses, il faut faire une configuration spécifique pour chacun.
Tu as entièrement raison pour le GPL, simple copier coller que j’ai gardé, c’est modifié.
Merci à toi
6 janvier 2010 - 15 h 20 min
Bonjour,
J’ai une plate forme avec Typo3 4.2.1 et RealURL 1.5.2 qui héberge une vingtaine de sites du type : http://www.upcam.fr , http://www.monsite.upcam.fr, http://www.monsite2.upcam.fr, etc.
Tout fonctionne à merveille.
Je voudrais passer sur la version 4.3.0 de Typo3 avec la version 1.7.0 de RealURL. Pour cela j’ai monté un nouveau serveur. Après installation, et migration de la base, tout fonctionne correctement sauf la réécriture d’adresse.
J’ai l’erreur suivante : [Error! - Reason: RealURL error: unable to determine rootpage_id for the current domain.]
Avez-vous une idée.
Merci.
26 janvier 2010 - 17 h 07 min
Allo Yohann,
Tu pourrais aussi ajouter la configuration du sitemap.xml dans realurl qui est quand même indispensable dans tous les sites.
Pour le setup.. moi j’utilise des constantes pour l’url du site, c’est plus pratique si on y faire référence plusieurs fois dans notre code.
Merci
26 janvier 2010 - 20 h 51 min
Oui tu as raison yannick mais tout dépend du plugin que tu utilise
Il y en a qui vont utilisé le type 200 ou certaine extension embarque la config comme seo_basics.
Je serais intéressé de voir ta config par constante par contre.
3 février 2010 - 19 h 51 min
Allo
Pour la constante, je parlais du code Typoscript, juste mettre ton « http://www.mysite.com/ » dans une constante. Vu que ca arrive qu’on utilise l’url pour d’autres extensions, ca évite d’avoir a la changer quand tu passes ton site de prod a dev en cherchant à plusieurs places.
Merci pour l’extension seo_basics, je connaissais pas. Ceci dit, dernièrement j’ai eu a faire un plan du site avec des pages de détail (un peu comme tt_news) et l’extension mc_googlesitemap et ca marche super bien. Mais là encore, pas besoin de spécifier de type pour celle ci.
A+
PS : Il est super beau ton blogue, suis jaloux lol
15 juillet 2010 - 15 h 14 min
Je voudrais passer sur la version 4.3.0 de Typo3 avec la version 1.7.0 de RealURL. Pour cela j’ai monté un nouveau serveur. Après installation, et migration de la base, tout fonctionne correctement sauf la réécriture d’adresse.J’ai l’erreur suivante : [Error! - Reason: RealURL error: unable to determine rootpage_id for the current domain.]Avez-vous une idée.Merci.
+1
16 juillet 2010 - 10 h 57 min
Le message indique qu’il n’arrive pas a trouver l’ID correspondant au domaine.
Sur cette exemple, il faut bien remplir « $defaultRootPageId = 6; » et si plusieurs domaines la boucle du dessous. Sinon, lire ce qu’il y a écrit en commentaire du code.
2 février 2011 - 12 h 47 min
Bonjour Yannick,
Juste une question au sujet de ta boucle sur les domaines: tu défini d’abord le _DEFAULT puis ensuite tu précise les autres domaines sans vider le _DEFAULT. Il me semblait que cela ne fonctionnait pas (cf. « What you did not know about _DEFAULT » sur la page http://dmitry-dulepov.com/article/realurl-made-easy-part-2.html). Tu n’a jamais rencontré de problème avec ta conf? Genre 2 pages qui ont le même nom sur deux sites différents et du coup realurl se plante pour générer le lien à cause du rootPageId.
Peut-être que l’article de Dmitry n’est plus à jour.. En tout cas moi je continue d’utiliser sa méthode (définir un tableau $tx_realurl_config puis le vider après affectation dans le bon ordre), mais ça m’intéresserait de savoir si ça a changé ou pas
J’avais aussi remarqué que lorsqu’on ne défini que le rootPageId pour le _DEFAULT et qu’on a du multisite, cela fonctionne quand même parfois..
2 février 2011 - 13 h 08 min
Yannick ? Je pense que tu t’adressais à moi
Et bien je connaissais effectivement cette article et cette notion sur le _DEFAULT (où il match le premier domaine sans vérifier le reste) mais je n’ai jamais rencontré ce bug avec cette config sur du multidomaines & multilangues.
Au pire, tu peux très bien unset() le _DEFAULT à la fin
3 février 2011 - 16 h 40 min
oups, désolé Yohann.. :S
Merci pour l’article en tout cas