Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-05-2014 14:08:54

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

htaccess pour un sous dossier

Bonjour,

Je dois migrer mon projet dans le sous dossier d'un serveur (/www/monProjet) et pas à la racine, mais j'ai du mal à configurer le htaccess. J'ai réussi à pointer vers la page index avec ces règles :

Code:

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ public/index.php [NC,L]

mises dans le dossier monProjet, mais l'application ne trouve aucune route, les images, css, javascripts ne sont pas chargés non plus (il va les chercher dans un dossier à la racine du serveur, plutôt que dans le sous dossier "monProjet").

Pourriez-vous m'aider ?

PS : Je n'ai pas accès aux vhosts sur le serveur.

Hors ligne

 

#2 13-05-2014 15:23:08

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: htaccess pour un sous dossier

Bonjour,

Comme c'est une application Zend Framework 2 le Vhost doit surement etre de ce type :

Code:

<VirtualHost *:80>
    ServerName www.tonProjet.com
    DocumentRoot "blabla/unfichier/www/tonProjet/public"
    SetEnv APPLICATION_ENV "development"
    <Directory blabla/unfichier/www/tonProjet/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Ton soucis je pense c'est que tu redirige que le fichier index et que du coup il te trouve l'index, mais le document root n'a pas changé (de même que ton public directory) et ton dossier public pour l'application doit surement se baser sur le vhost donc pour ton appli les css etc... sont toujours a la racine donc il ne les trouve plus.

Je ne sais pas puisque tu ne peux pas modifier le vhost ce que tu peux faire, peut être rediriger aussi dossier css, js et img a son nouvel emplacement...
C'est là qu'on remarque que cette déclaration du vhost est crucial pour une appli zf2.

Orkin ou d'autre auront peut être plus d'indication a te donner que moi.


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

#3 13-05-2014 16:01:03

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: htaccess pour un sous dossier

Salut,
tu peux essayer avec un lien symbolique dans le dossier racine du serveur vers ton fichier index.php dans le dossier public. Et du coup tu gardes le fichier .htaccess de base.

Hors ligne

 

#4 14-05-2014 10:21:02

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

Le problème c'est que je ne dois pas mettre de fichier en dehors du dossier de mon projet (pour ne pas polluer le serveur). Le serveur contient plusieurs projets et chaque projet doit être accessible par "http://ipServeur/nomProjet".

Je ne pense pas que mon problème soit si compliqué que ça à résoudre, pour moi il faudrait juste dire via le htaccess que le répertoire root pour mon application soit le répertoire "monProjet" plutôt que le répertoire "www" du serveur.

Hors ligne

 

#5 14-05-2014 10:26:11

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: htaccess pour un sous dossier

EN fait je me pose la question de savoir comment le vhost à été déclaré pour ton appli zf2 en premier lieu ?A moins que en le mettant à la racine du serveur la question ne se pose peut être pas (et encore je doute).

Je n'ai pas d'idée. Désolé


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

#6 14-05-2014 10:47:39

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: htaccess pour un sous dossier

Hello,
Tu arrive à avoir ta page d'accueil c'est ça?

Si oui, tu peu définir (en théorie je ne l'ai jamais utilisé encore =x) l'environnement de ton application sur ton serveur avec le "ZF2_PATH" dans ton public/index.php:

Code:

[lang=php]
//index.php
putenv('ZF2_PATH=/path_to_your_framework_folder');

sinon tu peu le faire dans ton htaccess (toujours en théorie ^^) au début de ton fichier :

Code:

SetEnv ZF2_PATH /myfolder/anotherfolder/zendpath

Dernière modification par flobrflo (14-05-2014 10:48:16)

Hors ligne

 

#7 14-05-2014 11:06:46

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

JGreco a écrit:

EN fait je me pose la question de savoir comment le vhost à été déclaré pour ton appli zf2 en premier lieu ?

Je passe d'une application en local (sous Wamp) vers un serveur où je n'ai pas les droits pour accéder à la config. Sous Wamp je peux très bien modifier mon fichier httpd-vhosts.conf, mais pas là.
Habituellement, quand je mettais mes sites sur un serveur, je n'avais accès qu'au répertoire où je met mon projet et il est défini comme étant la racine du serveur (et je ne peux pas aller voir ce que les autres ont mis), mais ce n'est pas le cas là.

Si ça peut vous donner une piste, mes liens générés grâce à l'aide de vue me renvoient "http://IpServeur/module/action" au lieu de "http://IpServeur/nomProjet/module/action".

PS : Ca ne marche pas avec "SetEnv ZF2_PATH /myfolder/anotherfolder/zendpath" hmm

Dernière modification par Seryus (14-05-2014 11:08:09)

Hors ligne

 

#8 14-05-2014 11:38:35

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: htaccess pour un sous dossier

pour le ZF2_PATH je te renvois vers la doc
http://framework.zend.com/manual/2.0/en … ation.html

ps: je suis désolé j'avais trouvé sur un fofo  qu'il fallait le mettre dans htaccess, mais avec la doc ils disent httpd.conf

peut être un autre lien interessant :
http://framework.zend.com/blog/zend-fra … eased.html

Voila et si tout ça marche pas je peu te proposer une dernière bidouille:
essai de rajouter dans tes routes parents de tes modules '/nomProjet/'.

par exemple:

Code:

[lang=php]
'accueil' => '/nomProjet/',
    'defaults' => array(
        'controller' => 'IndexController',
        'action'     => 'index',
  ),

'user' => '/nomProjet/user[/:param]',
    'defaults' => array(
        'controller' => 'UserController',
        'action'     => 'fonctionuser',
  ),

Hors ligne

 

#9 14-05-2014 13:10:57

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

J'avais trouvé ça sur un forum pour remplacer le httpd.conf par le .htaccess :

Code:

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

Le problème c'est que ça ne fonctionne que si le projet est à la racine du serveur. J'ai essayé d'enlever les "/" devant public pour avoir un lien relatif à l'emplacement actuel, ça me trouve l'index, mais j'ai le problème avec les routes, fichiers css/js.

Avec le "SetEnv ZF2_PATH", ça me retourne une page blanche.
La bidouille résout peut-être le problème des routes, mais je devrais modifier toutes les routes de mon application sad

Je remarque aussi que si j'essaie de suivre le lien "http://ipServeur/monProjet/public" j'obtiens une page avec seulement "run();" d'écrit. Peut-être qu'il me manque quelque chose sur le serveur ? Je me souviens avoir déjà eu ce problème il y a longtemps, mais pas moyen de retrouver une piste concernant celui-ci hmm

Hors ligne

 

#10 14-05-2014 14:11:19

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: htaccess pour un sous dossier

Mmmmhhh.. Pour l'instant je peu que te conseiller d'essayer d'installer un skeleton propre pour tester avant de migrer ton application, histoire de ne pas avoir d'interférence. (on sait jamais ^^)

(je te donne des news si je trouve une autre idée ^^)

EDIT : ah oui, ton serveur affiche-t-il toutes les erreurs? (des fois une page blanche peut cacher un Warning!)



EDIT 2 : bon, on peu faire une batterie de test :
dans index.php vérifie qu'il trouve bien les fichiers :


'init_autoloader.php'
et
'config/application.config.php'

un var_dump(file_exist(...)); suffira

et à la fin du fichier tu fais un die('ok');

Dernière modification par flobrflo (14-05-2014 14:29:59)

Hors ligne

 

#11 14-05-2014 14:50:15

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: htaccess pour un sous dossier

Et sinon un lien symbolique ?

Hors ligne

 

#12 14-05-2014 15:03:10

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: htaccess pour un sous dossier

Si j'ai bien compris il est obligé de bouger toute son application dans le sous dossier pour ne pas empiéter sur les autres projets en cours.

Hors ligne

 

#13 14-05-2014 19:26:13

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: htaccess pour un sous dossier

Ca n'empêche pas de faire un lien symbolique sur le fichier index.php. De cette façon pas besoin de modifier le vhost et le serveur va bien appeler le bon fichier et normalement, dans ce cas, pas de problèmes avec les routes etc ...

Hors ligne

 

#14 15-05-2014 11:14:38

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

J'ai essayé le lien symbolique, ça m'affiche "run();"

Hors ligne

 

#15 15-05-2014 12:13:42

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: htaccess pour un sous dossier

Personnellement j'ai utilisé le htaccess de zf2 dans un projet laravel une fois, et ca marchait pas mal...

Disons que tu doives mettre le site dans /var/www/site pour y acceder via http://toi.com/site.

Dans /var/www/site/.htaccess

Code:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>

Puis dans /var/www/site/public/.htaccess (ton htaccess zf2, garde le plus de trucs dedans):

Code:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
</IfModule>

Note le rewrite base qui est important dans l'histoire smile

Hors ligne

 

#16 16-05-2014 10:23:37

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

En utilisant ces 2 .htaccess, il me dit qu'il n'arrive pas à trouver le dossier public. J'ai enlevé le "/" devant "public" dans le 1er .htaccess, et il m'affiche bien le site, mais même problème avec les routes/css/js.

J'arrive à reproduire le problème en local, il suffit simplement d'installer la Skeleton Application et de ne pas configurer de vhost. Puis, il faut essayer d'y accéder via http://127.0.0.1/monProjet (avec les fichiers .htaccess proposé ci-dessus).

Hors ligne

 

#17 16-05-2014 10:55:00

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: htaccess pour un sous dossier

Tu dis que tu arrives a le reproduire en local, ca veut dire que tu as une version en ligne ? On peut avoir l'url ?

Utilises-tu $this->basePath() dans tes vues ?

Hors ligne

 

#18 16-05-2014 11:04:31

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

Je me suis mal exprimé, par "en local" je voulais dire sur mon pc avec Wamp. L'autre version est sur un réseau intranet. Oui j'utilise basePath, mais que pour une balise "<base>" qui se trouve dans mon layout.

Hors ligne

 

#19 17-05-2014 10:58:16

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: htaccess pour un sous dossier

Pourrais-tu nous donner les erreurs que tu as dans ta console de developer tools ?

Au moins on aurait une idée des fichiers recherchés, et du coup du pourquoi ça marche pas...

Je n'ai jamais utilisé base dans mes devs, je ne saurai donc pas dire si c'est sensé marcher, ou si ça marche uniquement pour les images et liens...

Hors ligne

 

#20 19-05-2014 14:12:34

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

J'ai réussi à corriger quelques problèmes en faisant un "mix" de tout ce qui a été dit ici.

J'ai donc refait une installation au propre de la Skeleton application où j'ai ajouté mes modules et les dossiers contenant les images, css, js. Je n'ai plus le problème avec "run();" qui s'affichait.

Aussi j'ai mis les fichiers .htaccess que tu m'as donné en enlevant les "/" devant public, et j'arrive à accéder à mon application via "http://ipServeur/monProjet".

Par contre, les routes posent toujours problème (elles affichent l'url "http://ipServeur/controller/action" au lieu de "http://ipServeur/monProjet/controller/action").

Hors ligne

 

#21 20-05-2014 10:35:51

Splyf
Membre
Date d'inscription: 24-10-2013
Messages: 115

Re: htaccess pour un sous dossier

Salutation,

Pour tes routes, comme disais lobrflo, tu risque de devoir toute les réécrire...mais pour évité cela et garantir une portabilité maximum, je dirait de vérifier au niveau du bootstrap d'un module l'ip du serveur, et si elle correspond, récupérer la configuration de toute les route et de modifier toute les clé "route" en rajoutant devant "monProjet".

exemple bidon qui ne marchera pas mais juste pour illustrer ce que je veut dire:

Code:

[lang=php]
function Bootstrap(){
    if($_SERVER['SERVER_ADDR'] == 'ipServeur'){
         //j'ai oublié comment récup la config mais imaginons ^^:
        $config = getConfig() ;
        foreach($config['router']['routes'] as $route){
             $route['route']=  '/monProjet/'.$route['route'];
        }
    }
}

A voir selon la façons dont c'est configurer.

L'ideal serrai de créer un module, "moveUriRoot" par exemple, que l'on pourrai configurer de sorte a définir plusieurs racine possible selon plusieurs ip ou non de domaine.

Je pense que ce genre de module pourrai être utile pour beaucoup, j'ai moi même été confronté a ton problème et nous avons décidé de prendre le problème autrement : l'utilisation de sous domaine, mais on a pas tous accès à l'administration d'un serveur hmm

Hors ligne

 

#22 20-05-2014 18:03:22

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

Je ne vais pas réécrire toutes les routes de mon application, ça devient problématique si je dois installer un nouveau module ou autre, je devrais à chaque fois modifier les routes sad

Tant pis si ce n'est pas possible, le site sera accessible via "http://ipServeur/monProjet/public".

Merci quand même !

Hors ligne

 

#23 21-05-2014 09:28:27

Splyf
Membre
Date d'inscription: 24-10-2013
Messages: 115

Re: htaccess pour un sous dossier

rhooo l'à pas tout lue! je te propose justement une solution pour ne pas les réécrit manuellement, mais bon as you want.

Hors ligne

 

#24 21-05-2014 11:59:02

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: htaccess pour un sous dossier

Si si j'ai lu, mais d'après ce que j'ai compris ça revient aussi à modifier tout nouveau module hmm

J'ai enfin résolu mon problème !

J'ai finalement pu avoir la main sur les fichiers conf du serveur.
Sous debian, dans apache/sites-availables je créé un fichier avec cette config, puis je l'active :

Code:

Alias /monProjet /var/www/monProjet/public

SetEnv APPLICATION_ENV "development"

<Directory "/var/www/monProjet/public">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>

Résultat, mon site est accessible via "http://ipServeur/monProjet/", les autres projets ne sont pas impactés, plus de problème de route ou de fichiers externes non trouvé ! big_smile

Hors ligne

 

#25 21-05-2014 13:15:36

Splyf
Membre
Date d'inscription: 24-10-2013
Messages: 115

Re: htaccess pour un sous dossier

Aaaahh ba voila!
Ma solution c'était si tu n'avais pas accès a la config serveur: si tu débrouillai bien sur cette portion de code, tu n'avais a faire ce code que dans un seul module par exemple le module Application: quand tu parcours ta config depuis n'importe quel bootstrap, tu parcour TOUTE la config.

Mais du coup si tu a accès au config du serveur, pourquoi ne pas avoir tout simplement fait un sous domaine?

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages