Introduction
Pour ma part, j’ai mis du temps à comprendre le fonctionnement et à pouvoir rendre cela fonctionnel. Un tutoriel ne sera donc pas de trop pour ceux qui veulent aussi tenter l’expérience (testée sur Ouvaton).
Ce tutoriel s’adresse plutôt aux hébergés qu’aux hébergeurs, qui, je suppose, utiliseront les Alias ou VirtualHost d’Apache.
Ce tutoriel s’inspire du ticket 186 qui utilise des Alias.
2Déroulement2
J’ai installé un SPIP 1.9 avec plusieurs sites de deux manières : SPIP à la racine du compte, ou dans un sous répertoire. Peu de choses changent en fait, mais il est utile de les connaître !
Cas (1), à la racine du serveur :
- http://mon_serveur.org/
avec les sites spips de type :
- http://mon_serveur.org/mon_site/ ,
- http://mon_serveur.org/mon_autre_site/
Cas (2), dans un répertoire du serveur :
- http://mon_serveur.org/mes_spips/
avec les sites spips de type :
- http://mon_serveur.org/mes_spips/mon_site/ ,
- http://mon_serveur.org/mes_spips/mon_autre_site/
Remarquez que vous pouvez utiliser l’adresse http://mon_serveur.org/ ou http://mon_serveur.org/mes_sites/ pour avoir un SPIP aussi à cet endroit. Il vous suffit d’aller dans http://mon_serveur.org/ecrire/ ou http://mon_serveur.org/mes_sites/ecrire/ et de configurer.
Si vous avez déjà un site en SPIP 1.9 configuré, vous pouvez aussi suivre ce tutoriel pour en creer d’autres, dans un sous-dossier. Votre premier site continuera de fonctionner correctement.
21- Création des dossiers accueillant les sites2
Creer un dossier dans le répertoire hébergeant SPIP
nommé SITES (ou le nom que vous voulez, à condition de le changer partout dans le turoriel) (au même niveau que CACHE, IMG,...)
Dans ce dossier, créer un sous dossier pour chacun des sites (mon_site, mon_autre_site), et dans chacun :
des sous dossiers :
- CACHE,
- IMG,
- data,
- upload,
- squelettes (éventuellement)
des fichiers (éventuellement) :
- .htaccess (obligatoire ou non ?)
- mes_fonctions.php
- mes_options.php
22- Création et modification du .htaccess2
Le .htaccess doit être modifié pour rediriger les adresses des sites SPIP correctement.
(Ce n’est pas la méthode décrite par le ticket 186 qui modifie le fichier de configuration du serveur Apache en créant des Alias, ce qu’on ne peut pas faire dans un .htaccess)
(Il faut donc, dans notre cas, que le serveur autorise le mod_rewrite d’Apache)
Le but est que les adresses de type :
- http://mon_serveur.org/mon_site ou http://mon_serveur.org/mes_spips/mon_site
soient redirigées vers :
- http://mon_serveur.org/ ou http://mon_serveur.org/mes_spips/
pour être traitées par :
- http://mon_serveur.org/spip.php ou http://mon_serveur.org/mes_spips/spip.php
Créer le fichier .htaccess, en copiant le fichier htaccess.txt .
Puis selon le cas...
3Cas (1) : racine du serveur3
Le .htaccess est à ce niveau :
- http://mon_serveur.org/.htaccess
À l’intérieur, mettre :
- Dans Configuration :
- RewriteBase /
- Dans Réglages personnalisés :
- RewriteRule ^mon_site/(.*) /$1 [QSA,L]
- RewriteRule ^mon_autre_site/(.*) /$1 [QSA,L]
3Cas (2) : répertoire du serveur3
Le .htaccess est à ce niveau :
- http://mon_serveur.org/mes_spips/.htaccess
A l’intérieur, mettre :
- Dans Configuration :
- RewriteBase /mes_spips/
- Dans Réglages personnalisés :
- RewriteRule ^mon_site/(.*) /mes_spips/$1 [QSA,L]
- RewriteRule ^mon_autre_site/(.*) /mes_spips/$1 [QSA,L]
23- Création et modification de ecrire/mes_options.php2
Il faut maintenant dire à SPIP que les adresses comportant des dossiers dans l’url (/mon_site) doivent être utilisés comme des SPIP autonomes, si leur dossier existe.
3Pour information3
Toute modification de ce fichier affectera les options de tous les sites hébergés.
Par exemple, mettre dans ce fichier :
- $type_urls = ’propres’ ;
Donnera par défaut à tous les sites ce type d’url... Mais chaque site peut le changer dans son propre /mon_site/mes_option.php
3Cas (1) : racine du serveur3
Créer/éditer le fichier ecrire/mes_options.php :
Le mes_options.php est à ce niveau :
- http://mon_serveur.org/ecrire/mes_options.php
Ajouter entre
<?php et ?>
ces lignes :
if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) {
if (is_dir($f = _DIR_RACINE . 'SITES/' . $r[1]. '/')) {
$cookie_prefix = $table_prefix = $r[1];
define('_SPIP_PATH', 'SITES/' . $table_prefix . '/:./:dist/:formulaires/:ecrire/');
define('_DIR_IMG', $f.'IMG/');
define('_DIR_DOC', _DIR_IMG);
define('_DIR_CACHE', $f.'CACHE/');
define('_DIR_SESSIONS', $f.'data/');
define('_DIR_TRANSFERT', $f.'upload');
define('_FILE_CONNECT_INS', $f.'inc_connect');
$GLOBALS['dossier_squelettes'] = $f.'squelettes';
if (is_readable($f .= 'mes_options.php')) include($f);
}
}
Un rapide détail s’impose
Par défaut, la ligne
- $cookie_prefix = $table_prefix = $r[1] ;
Va créer des tables mysql avec des préfixes ayant le nom du répertoire contenant le site : mon_site_article à la place de spip_article par exemple. Cela permet d’héberger tous les sites sur une seule et même base de données. Vous pouvez garder le préfixe par défaut (spip), mais il faut penser à avoir plusieurs bases de données différentes pour chaque site. _ Pour cela, mettre à la place :
- $cookie_prefix = $r[1] ;
La ligne ci dessous définit l’adresse du dossier de squelette (mon_site/squelettes) :
- $GLOBALS[’dossier_squelettes’] = $f.’squelettes’ ;
Pour que tous les sites aient le même squelette situé dans http://mon_serveur/squelettes/ vous pouvez enlever le $f. pour n’avoir que :
- $GLOBALS[’dossier_squelettes’] = ’squelettes’ ;
3Cas (2) : répertoire du serveur3
On ajoute ces lignes entre
<?php et ?>
du fichier http://mon_serveur/mes_sites/ecrire/mes_options.php :
if ( preg_match(',/mes_sites/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) {
if (is_dir($f = _DIR_RACINE . 'SITES/' . $r[1]. '/')) {
$cookie_prefix = $table_prefix = $r[1];
define('_SPIP_PATH', 'SITES/' . $table_prefix . '/:./:dist/:formulaires/:ecrire/');
define('_DIR_IMG', $f.'IMG/');
define('_DIR_DOC', _DIR_IMG);
define('_DIR_CACHE', $f.'CACHE/');
define('_DIR_SESSIONS', $f.'data/');
define('_DIR_TRANSFERT', $f.'upload');
define('_FILE_CONNECT_INS', $f.'inc_connect');
$GLOBALS['dossier_squelettes'] = $f.'squelettes';
if (is_readable($f .= 'mes_options.php')) include($f);
}
}
En fait, toute la nuance est dans le preg_match...
24- Création et modification de mon_site/.htaccess2
(je ne suis pas sûr que ce soit indispensable)
Mettre dans Configuration :
- Cas (1)
- RewriteBase /mon_site/
- Cas (2)
- RewriteBase /mes_spips/mon_site/
Conclusion
Si vous êtes chanceux, peut être que ça fonctionne !
Pour lancer la procédure d’installation de vos sites, allez dans le répertoire écrire :
- http://mon_serveur/mon_site/ecrire/
- http://mon_serveur/mes_spips/mon_site/ecrire/
Il faut bien configurer l’adresse de vos sites dans l’interface privée :
http://mon_serveur.org/mon_site/ ou http://mon_serveur.org/mes_spips/mon_site/
Il se peux que vous croisiez certains problèmes par la suite, comme trouver la bonne url pour faire fonctionner un javascript... J’ai du pour la configuration d’un menu dépliant (pour l’image des + et - qui se configure dans le javascript) mettre : SITES/nom_site/squelettes/img/mon_image.gif à la place de img/mon_image.gif . SInon, rien de bien méchant.
Alors si tout fonctionne, quand Spip passera en version 2.0 (je sais que vous en rêvez déjà !), vous n’aurez qu’un seul noyau à mettre à jour !
Discussions par date d’activité
21 discussions
Salut,
J’ai eu beau essayer toutes les manips possibles, j’ai pourtant du oublier qq chose, puisque lorsque je fais tout ça :
Ca ne fonctionne pas :
Je perds espoir quand je vois que plus ou moins tout le monde y arrive :-|
Merci d’avance de toute aide qui vous pourrez m’apporter
O
Pouvez-vous donner un peu plus d’indications ? adresse des sites, rewritebase, configuration de mes_options (la ligne if... principalement), windows ou linux, en local ou sur le web ?
Merci, MM.
Merci de ton aide Matthieu.
Il s’agit d’un hébergement linux (RHEL3 - Apache 2), avec la dernière version spip svn (je viens de faire un update) et en intranet (pas de tests possibles de l’extérieur, désolé).
Le site principal : http://spip.servwebdev/ et les sous sites : http://spip.servwebdev/site1/ (pour l’instant je n’en ai fait qu’un seul). site1 se trouve PHYSIQUEMENT dans spip.servwebdev/SITES/site1/
Dans le .htaccess à la racine de spip.servwebdev, RewriteBase vaut / et RewriteRule ^site1/(.*) /$1 [QSA,L]
Le mes_options.php dans le ecrire du site principal contient
J’ai du faire une bourde qq part mais impossible de savoir où :-/
Quand on accède à spip.servwebdev/site1/ avec les paramètres que je cite, ça fait une boucle infinie qui affiche en continue ’Mon site SPIPMon site SPIP’... et la page est intitulée erreur 404.
Une idée ? merci d’avance
Voir plus bas le post sur les corrections du htaccess.
Une erreur de ma part. Désolé.
En espérant (aussi) que la modification corrige le problème.
MM.
Désolé, ça ne corrige pas le problème. J’ai activé le RewriteLog avec un niveau maximal histoire de voir ce qu’il se passe.
Bon apparemment c’est plus rentable de conserver le /$1 au lieu du $1, ça fait une étape de moins.
Par contre moi je boucle et je ne sais pas pourquoi :-(
Et ainsi de suite, comme s’il n’arrivait pas à trouver spip.php pourtant il dit le contraire (pattern -f) !
J’avoue être perdu là, je ne vois rien d’anormal.
J’avais eu un problème similaire... Une boucle infinie dès que spip arrivait sur #FORMULAIRE_RECHERCHE je crois dans inc-head.html, et il ne trouvait pas le fichier formulaire correspondant...
Il me semble que j’avais copié /formulaires dans /SITES/mon_site/formulaires
Tentes cela pour voir ?
Merci bien Mat. Je ne boucle plus, par contre j’ai toujours l’erreur 404. Je vais pouvoir investiguer un peu plus.
Ahah !
J’ai trouvé la source de mon erreur 404... J’ai fait la bêtise de nommer mon dossier SITES/site1 or le système de gestion des urls croit qu’il doit ouvrir le site syndiqué numéro 1 ! Une fois renommé en siteA et ayant fait les modifs nécessaires ça marche un peu mieux. J’ai d’autres erreurs (impossible de se loguer dans ecrire/), mais il ne doit plus rester grand chose.
Donc la leçon à retenir de tout ça, c’est d’éviter un nom qui appartient à Spip.
Merci pour tout MM.
Tout fonctionne (enfin il semblerait pour l’instant). Le préfixe des tables ne correspondaient forcément plus entre site1 et siteA.
Et du coup j’ai remis les urls propres, je les soupçonnais d’être fautives. Perfect !
P.S. J’ai moi aussi eu le hic avec le slash final. J’ai résolu le problème comme ceci :
Bon bien sûr, il faut le répéter à chaque nouveau site, mais c’est mieux que rien.
Excellent, merci pour le slash final.
Ca marche aussi, du coup, très bien comme cela (cas 1 & 2) :
Par contre, je n’ai pas réussi avec le cas des redirections génériques (rewritecond + rewrite rule).
J’ai tenté un long truc... il remplace bien mon_site par mon_site/, mais m’affiche une page 302 Found... tant pis...
Je donne le code au cas où quelqu’un trouverait l’erreur...
Pour cas 2 (enlever /mes_spips pour le cas 1)
Encore merci pour le truc du /,
MM.
Ya pas de quoi :-)
Perso, comme je le disais plus haut, j’ai gardé le / devant le $1, parce que lorsqu’on regarde les logs du rewrite, on voit que, si le / n’est pas présent, il l’ajoute, ce qui fait une étape supplémentaire. Maintenant est-ce que ça fonctionne tout le temps...
D’autre part si je ne mets pas le / pour la redirection :
RewriteRule ^siteA$ siteA/ [R]
au lieu de
RewriteRule ^siteA$ /siteA/ [R]
Je me retrouve avec un double slash : http://spip.servwebdev//siteA/
Autre chose, si on utilise la directive Alias, il n’y a aucun problème de ’trailing slash’.
Enfin pour ton code, chez moi il marchotait. si je fais http://spip.servwebdev/siteA il m’affiche bien siteA mais il n’ajoute pas le / final (du coup avec les urls propres, dès qu’on change de rubrique il croit être dans le site principal). Alors j’ai ajoute un L à la règle, puis le / devant, sinon je retrouve mon problème de double /. Je croyais que le R était forcément le dernier exécuté, mais visiblement non.
Ce qui donne :
RewriteRule ^([^/]+)$ /$1/ [R,L]
Ha, bien le code générique pour le /
Un poil expéditif : http://mon_serveur.org/mon_site se redirige avec un / : OK
Mais http://mon_serveur.org/mon_article_du_moyau fait la même chose comme si c’était un répertoire !
MM.
Répondre à ce message
bonjour
en premier lieu bravo !
en deuxième je n’arrive trouver le bon bout pour gerer des sousdomaines style
http://toto.mondomaines.org/
http://tata.mondomaines.org/
http://tutu.mondomaines.org/
chez ovh sur un 240 plan
si vous avez une idée lumineuse ;)
pour spip
tom
Il y a plusieurs redirections à faire...
Il faut pouvoir accéder à la configuration apache du serveur.
Ce que je propose est « à tester » (je l’avais testé en local sous linux Ubuntu Dapper Drake)...
Si vous travaillez en local, il faut rediriger « http://mon_serveur.org » vers 127.0.0.1 (un fichier hosts à modifier - dans /etc/hosts sous linux Ubuntu de mémoire).
Dans la configuration d’apache, il faut rediriger les noms de sous domaines dans le dossier contenant SPIP...
Par exemple avec ces lignes (à modifier selon le serveur et l’emplacement de spip) :
Tous les sous domaines (spip mutualisés), ici, sont redirigés vers le domaine.
Ensuite, dans le .htaccess, magiquement, mis à part un rewriteBase /, ne rien mettre...
Puis dans mes options, il faut qu’il redirige l’adresse sous_domaine.mon_serveur.org vers une configuration /SITES/sous_domaine/
Exemple :
Bon Spip, bons tests, bonnes corrections...
MM.
chapeau !
merci part contre je n’ai pas acces à la conf apache sur du mutualisé...
je vais continuer à faire chauffer les neurones.
bonne journée
tom
Répondre à ce message
En suivant le tutotrial pour rendre spip multi sites, j’ai des erreurs
voici ma configuration :
sous serveur Linux en Intranet, j’ai copié les fichiers Spip de la version 1.9 dans un répertoire que le service systeme de mon entreprise ma imposé.
L’installation comme d’habitude s’est bien passée.
(dans ce tutoriel je ne comprend pas la différence entre « à la racine du serveur » et « dans un répertoire du serveur » dans la mesure ou un site est toujours un répertoire
dans l’arborescence sur un serveur)
Le répertoire ou est placé le noyau Spip 1.9 est : /nfs/users/drd/drh/spip19
j’ai plusieurs sites SPIP qui fonctionnent déjà à cet emplacement, comme : /nfs/users/drd/drh/portailtest (le portail RH en Spip 1.8.2)
Pour me connecter à mon site nouvellement créé, je le fais de 2 manières :
- http://zeus/drh/spip19 (zeus est le nom du serveur)
- http://spip19 (j’ai fait créer et pointer le DNS)
Jusque là tout fonctionne bien.
Pour rendre SPIP multi sites, j’ai fait les modifs du tutoriel et ca ne marche plus.
Il est dit : Creer un dossier dans le répertoire hébergeant SPIP nommé SITES
j’ai bien créé un répertoire : /nfs/users/drd/drh/spip19/SITES
il est dit : Dans ce dossier, créer un sous dossier pour chacun des sites
j’ai bien créé un répertoire : /nfs/users/drd/drh/spip19/SITES/portailtest
il est dit : et dans chacun les sous/réperoires CACHE, IMG etc (ce que j’ai fait)
J’ai demandé à l’équipe système que Apache autorise le .htaccess et le mod_rewrite (des tests ont fonctionnés)
J’ai renommé le fichier spip19/htaccess.txt en .htaccess et j’ai apporté les modifs suivantes :
RewriteBase /drh/spip19/ (spip19/spip.php est bien exécuté),
alors qu’avec RewriteBase / , j’avais un message d’erreur, /spip.php NOT FOUND
RewriteRule ^portailtest/(.*) /$1 [QSA,L]
Dans /nfs/users/drd/drh/spip19/ecrire/mes_opttions.php, j’ai mis :
$type_urls = ’propres’ ;
+ ce qui est dit ...
Avec l’url suivante : http://zeus/drh/spip19/portailtest
j’ai l’Erreur 404
Avec l’url suivante : http://zeus/drh/spip19/
j’ai l’erreur :
Fatal error : Call to undefined function : generer_url_article() in /nfs/users/drd/drh/spip19/ecrire/public/composer.php(47) : eval()’d code on line 55
En espérant avoir été suffisament clair, merci d’avance de votre aide.
Bonjour,
Effectivement, il y a peu de différences entre les deux cas présentés. Ce que je veux dire, c’est que http://zeus/drh/spip19 est un répertoire (/drh/spip19) du serveur zeus alors que http://spip19 est la racine du serveur (par rapport à l’adresse l’url)
Tel que le tutorial est présenté, vous ne pourrez pas faire fonctionner les 2 en même temps, vu que les lignes (rewrite base) de .htaccess et la configuration de mes_options.php vont changer en fonction.
Avec http://zeus/drh/spip19/ il faut mettre :
- rewritebase /drh/spip19/
effectivement, et dans mes_options.php ceci :
(C’est peut-être ici le problème, penser à mettre le sous répertoire dans lequel baigne spip) :
Pas besoin de $type_url = ’propres’, c’était un exemple pour montrer que cette ligne, si elle est mise affecte tous les sites hégerbés, comme si c’était leur configuration par défaut.
Pour tester : http://zeus/drh/spip19/portailtest/ (sans le / final -> erreur 404)
et : http://zeus/drh/spip19/
Accessoirement, vérifier les permissions des fichiers et dossiers créés, notamment le mes_options.php qui doit pouvoir être lu (chmod 644 chez moi)
En espérant aider un peu...
MM.
Merci de votre aide !
j’ai bien rajouté la chaine /drh/spip19, ce qui donne :
if ( preg_match(’,^/drh/spip19/([a-zA-Z0-9_-]+)/,’,$_SERVER[’REQUEST_URI’],$r))
http://zeus/drh/spip19/ ou http://zeus/drh/spip19 fonctionnent
par contre avec : http://zeus/drh/spip19/portailtest
j’ai toujours l’erreur 404 (alors que je n’ai pas vu dans aucun .htaccess de mon site une gestion de l’erreur 404)
avec : http://zeus/drh/spip19/portailtest/ (le caractere / en plus)
je tombe sur la page d’accueil du serveur apache de la même manière qu’avec http://zeus
la chaine drh/spip19/portailtest/ semble etre substituée par rien (il reste zeus dans la chaine apparament)
voici mon réglage personnalisé
################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
RewriteRule ^portailtest/(.*) /$1 [QSA,L]
Merci de votre aide.
Merci de ne pas crier, mais je crois que j’ai trouvé l’erreur... Erreur de ma part sur le .htaccess :
Corrections du .htaccess :
Il faut mettre (sans / avant le $1 ) :
- RewriteRule ^mon_site/(.*) $1 [QSA,L]
- RewriteRule ^mon_autre_site/(.*) $1 [QSA,L]
Ou, éventuellement, si aucun dossier particulier n’est utilisé en dehors de ceux de spip (listés dans la ligne RewriteCond), rediriger tous les dossiers http://mon_serveur.org/mon_dossier/ vers un site Spip mutualisé nommé ’mon_dossier’ :
Cas 1 :
Cas 2 :
En espérant que cela corrige vos problèmes.
MM.
Je ne crie pas, le ! signifie ma joie
merci de cette réponse qui à remédié au problème :
il faut mettre (sans / avant le $1 ) :
RewriteRule ^mon_site/(.*) $1 [QSA,L]
par contre pour fonctionner il faut mettre le / en fin d’URL comme : http://zeus/drh/spip19/portailtest/
sinon on a l’erreur 404
et http://zeus/drh/spip19/portailtest/ecrire/
sinon on va à l’administration du site racine
par contre :
RewriteCond %REQUEST_URI !^/(CACHE|dist|ecrire|formulaire|IMG|oo|plugins|SITES|squelettes)/(.*)
RewriteRule ^[^/]+/(.*) $1 [QSA,L]
n’a pas fonctionné
presque tout fonctionne
sauf que pour la page d’accueil de mon sous site portailtest,
le squelette appellé est celui du répertoire squelettes ou est installé Spip,
et les rubriques, articles ... appellent bien le squelette dans SITES/portailtest/squelettes
j’ai essayé spip_initialisation_parametree($f, $f), mais ca marche pas.
J’ai vu dans le forum que certains rajoutaient des lignes dans ce .htaccess
Pouvez-vous reposter un message avec un résumé de ce qu’il faut mettre dans le .htaccess ...
Merci de votre aide
Pour votre cas, ce serait plutôt dans le .htaccess :
Pour le ecrire/mes_options.php :
- Pour spip 1.9
- spip 1.9 svn :
Bonne chance !
MM.
Sans les accolades bien sûr dans spip svn le :
$GLOBALS[’dossier_squelettes’] = $e.’squelettes’ ;
MM.
Bonjour,
encore moi, désolé de vous ennuyer.
C’est vrai que je suis presque au but, mais les 2 lignes que j’ai ajoutées dans .htaccess :
!^/drh/spip19/(CACHE|dist|ecrire|formulaire|IMG|oo|plugins|SITES|squelettes)/(.*)
RewriteRule ^[^/]+/(.*) $1 [QSA,L]
provoque l’erreur : internal server error avec http://zeus/drh/spip19/portailtest/
et erreur 404 avec : http://zeus/drh/spip19/portailtest
et affichage d’une page sans squelette avec les données du site spip racine
Par contre mon fichier mes_options.php est comme vous le donnez.
Merci de votre aide
Bien... laissez :
RewriteRule ^mon_site/(.*) $1 [QSA,L]
à la place des lignes deux lignes précédentes... Ca devrait tout fonctionner, non ?
C’est bizarre que ces deux lignes ne fonctionnent pas d’ailleurs... Elles étaient bien à la place de RewriteRule ^mon_site/(.*) $1 [QSA,L] ?
MM.
Bonjour,
A ce propos, comment fait-on pour ne pas avoir à préciser le / en fin d’url ?
Merci.
Bonjour,
j’ai dans mon .htaccess :
################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
RewriteRule ^portailtest/(.*) $1 [QSA,L]
c’est tout, et la page d’accueil de mon site s’affiche avec le squelette du site racine et les autres pages avec les squelettes de SITES/portailtest/squelettes
comme précisé par mon post précédent
merci d’avance
J’avoue que je ne sais pas d’où cela vient...
A moins qu’il n’y ait simplement pas de sommaire.html dans SITES/portailtest/squelettes ...
Ca le fait même en mettant /spip.php ?page=sommaire ?
Bonne recherche ;)
MM.
Et bien, en remerciant OLab, on obtient des lignes comme cela (dans le .htaccess) :
MM.
Répondre à ce message
Ce tutoriel est surement bien fait, mais ca fait 1 heure que je lis et relis et je n’y comprend rien, pourtant, je suis développeur depuis 15 ans. Ca prend vraiment la tête.
Je pense que c’est un peu confus et fouilli (mélange de plusieurs cas ...)
On fini par s’y perdre avec les 2 cas (mon_site, mes_spips ...)
Si SPIP était bien fait dans sa version 1.9, le multi-sites devrait fonctionner tout seul, sans rien avoir avoir à bidouiiler encore !
Un truc qui est encore réservé aux bidouilleurs fous. J’ai autre chose à faire qu’à perdre du temps à chercher.
J’attend un tutoriel mieux développé, qui explique par exemple ce qu’est le mod_rewrite, qui prend les 2 cas l’un après l’autre en expliquant à chaque fois, avec une doc bien structurée et mettant en évidence ce qui est important.
Une vraie doc quoi, qui servira à tout le monde, les bons et les moins bons en informatique.
Merci d’avance.
Quand je dis « si SPIP était bien fait », je veux dire par là qu’il faudrait dans l’administration pouvoir demander la création d’un site, et SPIP dans le lancement de l’administration dans /ecrire, devrait demander quel site voulez-vous administrer et nous montrer la liste ... (ca parait tellement évident)
Quand au mod_rewrite, comment savoir si notre hebergeur l’a accepté. Je ne l’ai pas vu avec phpinfo() ;
Dans le tuto il est écrit :
Par exemple, mettre dans ce fichier :
* $type_urls = ’propres’ ;
Donnera par défaut à tous les sites ce type d’url... Mais chaque site peut le changer dans son propre /mon_site/mes_option.php
C’est pas très clair, pourquoi mettre ’propres’ ...
De plus, comment spécifier une base de données distincte par site. Une base pour tous les sites dans notre intranet de sociétés qui comprend de nombreux sites SPIP, ca me parait dangereux pour la sécurité, les sauvegardes et restaurations. Par contre pour des sites perso, c’est plus souple, les Hébergeurs n’autorisent souvent qu’une base de données Mysql ; plus de bases, c’est pas le même prix.
Merci d’avance.
Quand on a du temps à perdre, évidement on trouve tout sur internet ;
j’ai trouvé pour MOD_REWRITE
un site sur le mod-rewrite : http://www.webmaster-hub.com/publication/article5.html
La meilleure manière de s’assurer que le module mod_rewrite est chargé est encore de consulter le phpinfo. La mention de mod_rewrite dans la section Apache/Loaded Modules reste la meilleure garantie.
Ce serait bien si c’était dans le tutoriel, ça éviterait de passer du temps à chercher
Cordialement
Peut-être souhaitez-vous développer un plug-in à SPIP pour qu’il gère comme vous dites le multi-site, ce serait intéressant ?
Ce tutorial est un retour d’expérience écrit de mon mieux. Je suis désolé de votre aventure avec l’url rewriting d’Apache, qui permet à SPIP d’utiliser des adresses d’URL différentes de spip.php ?article8 . Par exemple, lorsque l’on met dans mes_options.php la ligne $type_urls = ’propres’ ; , Spip utilisera des adresse plus jolies dans la barre comme : http://mon_serveur.org/titre_de_mon_article ou http://mon_serveur.org/-titre_de_ma rubrique- . Seulement, il faut effectivement qu’Apache soit configuré avec le mod_rewrite qui permet cela, mais la plupart des hébergeurs fournissent cette fonctionnalité.
Lorsque vous suivez le tutorial, SPIP va vous proposer pour chaque site une adresse de base de donnée, par conséquent, ils ne sont pas forcément gérés sur la même base. Si vous voulez garder le préfixe par défaut (spip_) pour le nom des tables mysql, remplacez $cookie_prefix = $table_prefix = $r[1] ; par $cookie_prefix = $r[1] ; Il faut avoir alors des bases de données différentes pour chaque site.
Cordialement,
MM.
Répondre à ce message
Salut,
Super contrib, très attendue.
Dans la liste des avantages, il y a aussi le fait d’économiser de la place disque en ne mettant qu’une install de SPIP : quelques Mo gagnés, c’est toujours bon à prendre.
Perso, j’ai rencontré plusieurs problèmes (dont le fameux « Erreur 302 Found », des problèmes de CACHE), à chaque fois ces problèmes ont été résolus par une reinstall propre et complète.
Il me reste un problème : l’appel de http://mondomaine/monsite/ecrire me ramène toujours sur http://mondomaine/ecrire avec la base de données liée au site écrire (le site de la racine).
Du coup, monsite est considéré comme non configuré (site en travaux).
Pourtant, mes maigres connaissances en php me permettent de m’assurer que le passage dans la boucle de mes_options se fait.
J’ai dû rater quelque chose mais quoi ?
Précisions, je suis sur un mutualisé OVH et je travaille avec Spip 1.9 officielle.
A+
Raphaël
Bon, je me réponds à moi-même. J’ai eu une idée 5 minutes après avoir écrit ce forum. Il m’a suffit de taper l’URL
http://mondomaine/monsite/ecrire/?exec=install
et j’ai pu tout configurer.
Du coup, tout marche.
A+
Raphaël
Répondre à ce message
Bonjour,
j’ai testé cette contrib, tout marche bien pour la création des sites, installation, espace privé ... mais par contre la redirection vers dossier squelette de chaque site ne s’effectue pas, j’ai bien suivi le tutoriel avec un version de Spip 1.9 téléchargé sur Spip.net et pas une version de developppement du trac , est ce que ça peut venir de là ? pour l’hébergement test c’est chez OVH mutualisé , est ce leur config d’apache ???
pour la hierarche je suis dans le cas d’un sous dossier appelé /spip situé au premier niveau de mon espace web. mes sites sont bien dans un dossier appelé /SITES/
bref je patine un peut si quelqu’un peut m’aider ... ou me donner une ’tite piste ...merci d’avance
As tu bien mis la ligne pour le dossier_squelette dans /ecrire/mes_options.php ?
Chaleureusement, MM.
PS : un article est en cours de création pour la doc de spip.net.
Ca avance !
Si tu es avec la version 1.9.0 (pas une version issue de trac), tu peux essayer cela (pour utiliser les bons logo et mon_site/plugins ...
Mais pour ton dossier_squelette, je ne sais pas...
MM.
Bon ça marche après avoir recommencé toute la procédure d’instal depuis le début, le dossier squelette fonctionne pour chaque sites, correctement.
un seul petit problème subsite :
je n’arrive pas a charger une page spécifique qui fonctionnais sous 1.8.3 avec les couple php3/html et qui me servais de diaporama.
je l’appelle par un lien de type http://mon_serveur.com/mon_site/spip.php?diaporama
la page diaporama.html est bien présente dans le dossier squelette mais ça me charge la page article ...
une idée ???
Essaies plutôt http://mon_serveur.com/mon_site/spip.php?page=diaporama
MM.
Répondre à ce message
Excellent !!
Mais :( , j’ai deux petits soucis :
- le logo site0 de http://mon_serveur.org/mon_site/ n’est pas physiquement dans SITES/mon_site/IMG mais dans http://mon_serveur.org/IMG ...
- et http://mon_serveur.org/mon_site/ fonctionne mais http://mon_serveur.org/mon_site (sans le slash final) ne fonctionne pas, on tombe sur ’Site en travaux...’
Si quelqu’un a une idée.
Merci
Certains soucis ont été corrigés par les développeurs sur svn (r6840) et (r6841). Ces changements sont aussi expliqués sur le ticket 186.
Ces modifications apportent :
- l’utilisation des logos correctement pour chaque site,
- le dossier /plugins peut être dans mon_site/plugins
- le dossier /formulaire peut être dans mon_site/squelettes/formulaire
- le dossier /ecrire/balise peut être dans mon_site/squelettes/balise
- le fichier /ecrire/mes_options.php est simplifié :
Bien évidemment, il faut du coup télécharger une version svn sur Trac pour l’utiliser tout de suite (à vos risques) ! Ou attendre un SPIP 1.9.1...
MM.
Corrections de la réponse précédente :
- le dossier /formulaire doit être dans mon_site/formulaire (je suppose que c’est identique pour ecrire/balise dans mon_site/balise)
- ecrire/mes_options.php doit encore posséder après include($e) la ligne
MM.
Les deux versions citées corrigent en effet le problème du logo site et certainement d’autres.
Il faut comme indiquer ajouter le dossier formulaires dans SITES/mon_site pour que le systeme fonctionne.
Mais je n’arrive toujours pas à résoudre le probleme de l’acces au site avec ou sans le slash a la fin de l’URL :
- http://mon_serveur.org/mon_site/ fonctionne
- http://mon_serveur.org/mon_site (sans le slash final) ne fonctionne pas, on tombe sur ’Site en travaux, Ce site n’est pas encore configuré. Revenez plus tard....’
Cela vient-il de spip ou plutôt d’un config serveur via htaccess ?
Merci
J’ai résolu le problème avec une solution peu pratique qui constiste à créer un répertoire vide mon_site au même niveau que le spip original , de ce fait le slash final est ajouté automatiquement.
Ceci contraint de créer un repertoire pour chaque site. Peut-être existe-t-il une solution avec rewrite mais je ne sais pas faire.
Je comprend qu’en fait sans le slash, l’URL est interprétée comme une partie du site original donc cela ne fonctionne pas.
Répondre à ce message
Il faut préciser que la procédure ici décrite fonctionne très bien (bravo !) pour des sites mutualisés en sous-répertoire (sur un compte d’hébergé et non d’hébergeur comme présisé en début d’article), du type http://www.domaine.org/spip-mutuel/
Il resterait à compléter la procédure pour des sites mutualisés (toujours dans un compte d’hébergé, mais disposant de la possibilité de créer et gérer des sous-domaines, voire d’héberger plusieurs domaines) :
Et dans un autre article, décrire la procédure de mutualisation pour les hébergeurs. Si des volontaires de l’apinc.org ou de lautre.net ayant un accès « root » voulaient se pointer, ce serait chouette...
AV
Répondre à ce message
Bonsoir,
Je suis dans la situation suivante : sur un serveur où tournent des dizaines de SPIP, j’aimerais proposer aux utilisateurs de « se brancher » sur une version centralisée de SPIP qui sera mise à jour à chaque release de version stable, histoire de faciliter la vie à tout le monde et d’éviter d’avoir des vieilles versions éventuellement pas très sûre qui tournent sur le serveur. Comment fais-je ? L’idée serait de proposer une manière très simple de faire, du genre, idéalement : « vous décompresser telle archive dans le répertoire où vous voulez un SPIP et ça marche toutr seul ».
Ici, tout fonctionne sur un seul domaine, mais dans le cas qui me préoccupe, j’ai des dizaines de domaines différents, sur des comptes différents, etc. C’est possible ?
Merci
Répondre à ce message
En fait il y avait quelques oublis dans le ticket 186 à partir duquel tu es parti, ce qui fait que certains répertoires ne seront pas mutualisés (les plugins comme dit ci-dessous, mais aussi les logos). La version 6840 corrige ça et fournit une interface plus commode (voir ma derniere intervention sur le ticket #186 ).
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |