- 1
[Opened] jUrl: ne pas inclure le basepath
Posted by Mathieu147 on 01/12/2010 19:58
Bonjour,
Voici ma situation actuelle:
J'ai une application Jelix (qu'on va appeler myapp), que je tente d'installer sur un serveur mutualisé OVH.
Mon espace web contient un dossier www qui est le DocumentRoot. Je ne peux pas changer ce DocumentRoot (on peut sur les dédiés, pas sur les mutualisés). Je ne peux pas utiliser ce répertoire comme le www de mon application, parce que je vais mettre plusieurs applications sur mon hébergement.
Je voudrais donc que mon application se trouve dans /www/myapp/, et en même temps je pourrai mettre des autres applications dans /www/myotherapp/ et dans /www/yetanotherapp/ ou même dans /www/ihavesomuchapplicationsonmyserver/. Enfin, vous voyez le topo.
Dans myapp, j'ai un module appelé pages qui gère les pages du site. J'utilise le moteur d'URL significant, de cette façon:
<url pathinfo="/:id-:title.html" module="pages" action="default:index" noentrypoint="true"> <param name="id" type="number" /> <param name="title" escape="true" /> </url>
Mon domaine (mondomaine.be) pointe sur le DocumentRoot (je ne peux pas changer ça non plus) et donc mes URL ressemblent à ceci:
http://www.mondomaine.be/myapp/www/index.php/38-titre-de-la-page-trente-huit.html
Pour que mon domaine puisse pointer sur /www/myapp/www/ plutôt que sur /www/, j'ai utilisé un fichier .htaccess de cette façon:
Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} mondomaine.be RewriteCond %{REQUEST_URI} !^/myapp RewriteCond %{REQUEST_URI} ^/(css|images|javascript) RewriteRule ^(.*)$ myapp/www/$1 [L] RewriteCond %{HTTP_HOST} mondomainebe RewriteCond %{REQUEST_URI} !^/myapp RewriteRule ^(.*)$ myapp/www/index.php/$1 [L] SetEnv PHP_VER 5 SetEnv SESSION_USE_TRANS_SID 0
Ça fonctionne: je peux voir mes pages avec des URL de cette forme:
http://www.mondomaine.be/38-titre-de-la-page-trente-huit.html
Mais le problème, c'est que jUrl, quand il génère l'URL d'une page, il me génère plutôt ceci:
http://www.mondomaine.be/myapp/www/38-titre-de-la-page-trente-huit.html
Premièrement, ce n'est pas ce que je veux, mais en plus, ça ne fonctionne même pas (Not Found).
J'ai pensé que je pourrais, dans defaultconfig.ini.php, modifier le basePath, et mettre / plutôt que /myapp/www/. Là, le problème est différent: jUrl génère de bonnes URL, mais par contre, quand je vais sur
http://www.mondomaine.be/38-titre-de-la-page-trente-huit.html
ça ne marche plus! jUrl n'arrive plus à détecter les paramètres de l'URL, et donc il agit comme si j'avais été sur
http://www.mondomaine.be
sans mettre du tout de paramètre.
Donc le problème est suivant: si je mets le basePath à /myapp/www/, jUrl génère des URL qui ne marchent pas, et si je mets le basePath à /, les paramètres ne sont pas bien détectés et donc les pages ne s'affichent pas.
Que puis-je faire?
Un grand merci pour toute aide!!
[Opened] Re: jUrl: ne pas inclure le basepath
Posted by foxmask on 01/12/2010 21:18
bonsoir,
une petite idée :
une appli devrait se suffir
ensuite il suffit d'ajouter des modules ; autant qu'on veut ; pour agrementer le site/appli.
enfin pour le path myapp/www ; pour ne pas se battre avec ça ; on restructure son appli afin que tout "atterisse" dans www (on met par conséquent des .htaccess dans le dossier important evidement :), ce que j'ai dû faire à mon tour avec havefnubb afin que le forum soit installable par quiconque sans se soucier du htaccess ou vhost
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Re: jUrl: ne pas inclure le basepath
Posted by Mathieu147 on 01/13/2010 09:04
Bonjour,
Merci foxmask pour ta réaction.
Mon application se suffit effectivement à elle-même, à part le module pages dont je parle, il y en a d'autres, et encore d'autres à venir.
Les autres applications que je vais installer sont des différentes, auront un nom de domaine différent, etc. en fait ce qu'il me faudrait, et je ne sais pas si c'est possible, c'est que jUrl ait 2 basePath différents:
- un qui serait le "vrai" basePath, donc /myapp/www/ dans mon cas, et qui permette de trouver le point d'entrée;
- et un "faux" basePath, qui serait celui utilisé pour générer les URL, soit / dans mon cas.
C'est possible de faire ça?
[Opened] Re: jUrl: ne pas inclure le basepath
Posted by foxmask on 01/14/2010 07:04
bonjour,
non pas que je sache.
si je ne m'abuse sur ovh on peut tout de meme repartir ses appli dans des document root different pour obtenir au moins
- http://mathieu.com
- http://app2.mathieu.com
- http://app3.mathieu.com
et sur le FTP on a nos 3 dossiers ; un par vhost
- www (le document root par defaut de mathieu.com) => app1
- app2 => app2
- app3 => app3
puis les lib et module et plugins
- lib => Jelix
- moules => les modules "maison" communs aux 3 app.
- plugins => les plugins "maison" communs aux 3 app.
sur un 60Gp je m'etais organisé ainsi ;)
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Re: jUrl: ne pas inclure le basepath
Posted by laurentj on 01/14/2010 10:59
Oui, normalement sur OVH, on peut changer le document root (tout hebergeur serieux permet de le faire de nos jours). Tu t'embetera alors beaucoup moins avec tes rêgles rewrite (qui m'ont pas l'air au point, mais j'ai la flemme de les tester)
Et comme le dit foxmask, tu peux mettre le lib/ et ton appli (sauf le www de l'appli) en dehors du document root, pour plus de sécurité. tu n'as ensuite qu'à changer les chemins dans le index.php et le application.init.php (et les autres *.init.php) de ton appli
Et sinon, pour résoudre ton problème (mais je te conseille fortement de mieux organiser ton code et mieux configurer ton hebergement), tu force effectivement le basepath à "/", mais ensuite le point d'entrée indiqué dans le urls.xml doit, en toute logique, être relatif au basepath, donc il suffit de mettre
<classicentrypoint name="myapp/www/index">
tout simplement. (y a peut etre aussi dans le fichier defaultconfig où il faut remplacer index par myapp/www/index, je ne sais plus)
[Opened] Re: jUrl: ne pas inclure le basepath
Posted by Mathieu147 on 01/14/2010 11:22
Bonjour,
En effet sur OVH on peut configurer des sous-domaines, qui pointent vers des répertoires différents. Mais on ne peut pas reconfigurer le sous-domaine www. Et ça m'ennuie parce que je n'ai pas envie d'en utiliser un autre.
Je ne peux pas non plus changer le documentroot. On peut faire ça sur les dédiés, mais pas les mutualisés.
Mes règles de rewrite sont certainement foireuses, c'est la première fois que j'en fais, je me suis sûrement trompé :-D
Finalement, j'ai mis toute mon appli (sauf son www) en dehors du Documentroot, et j'ai reconfiguré les quelques chemins dans les *.init.php.
Ça m'ennuie un peu de faire comme ça mais tant pis.
En fait sur OVH, on a un domaine qui est compris dans l'hébergement, et ce domaine là tu ne peux pas le rediriger où tu veux. Tu peux faire ça seulement avec les autres domaines que tu achètes par la suite.
Si j'avais su ça, j'aurais pris comme domaine gratuit un truc qui ne m'intéresse pas, et j'aurais pris mon vrai domaine par la suite pour pouvoir le diriger vers le répertoire que je veux...
[Opened] Re: jUrl: ne pas inclure le basepath
Posted by laurentj on 01/14/2010 22:44
Mais on ne peut pas reconfigurer le sous-domaine www
et alors ? pour ton appli principale, le repertoire s'appele www, et ce n'est pas grave. je ne vois absolument pas ce qu'il y a de bloquant.
Je ne peux pas non plus changer le documentroot
là je ne te suis plus, parce que deux lignes avant tu dis :
En effet sur OVH on peut configurer des sous-domaines, qui pointent vers des répertoires différents
et cela correspond justement à la possibilité de changer/spécifier un document root.
Ça m'ennuie un peu de faire comme ça mais tant pis.
pourquoi ? jelix a justement été concu de manière à pouvoir mettre le lib/, le var/ et le www/ où l'on veux, de manière à pouvoir s'adapter aux normes d'un système. Dans un paquet pour debian par exemple, on pourrait donc très bien mettre le lib/ dans /usr/lib/jelix/, le myapp/var/ dans /var/lib/myapp, et le myapp/www dans /var/www/myapp/.
on a un domaine qui est compris dans l'hébergement, et ce domaine là tu ne peux pas le rediriger où tu veux
encore une fois, je ne vois pas où est le problème. le contenu de myapp/www de ton appli pour le domaine www.domain.be, tu la mettra dans le répertoire en question, tant pis si ce repertoire s'appelle trucmuche. Et pour les autres applis, qui ont leur propre domaine ou sous domaine, tu indiques d'autres repertoires, et tes applis sont ainsi bien séparés, et tu n'as pas à faire des htaccess de 50 lignes.
[Opened] Re: jUrl: ne pas inclure le basepath
Posted by yan_vn on 02/01/2010 09:52
Bonjour à tous,
Réponse en vitesse en passant... Pour le problème de base_path, moi j'ai supprimé le répertoire www d'OVH et j'ai fait un symlink vers le bon répertoire dans l'arborescence de jelix. Ca marche. J'ai un 90plan avec l'accès en SSH. Avec les GP et les nouveaux hébergements c'est pas toujours possible d'avoir la CLI...
A+, Yannick.
Yannick DEVOS - http://www.nature-mekong.com/
- 1