Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je développe une application modulaire sous Zend, que j'héberge chez Nuxit.
En local, je bosse avec Xampp, sans souci.
J'utilise, en local, le couple hosts / httpd-vhosts.conf, pour créer un nom de domaine du type www.monsite.dev.
L'administration est un module de mon site, donc situé dans /application/modules/admin, et j'aimerais pouvoir y accéder en créant un DNS secondaire (aussi bien en local, que chez mon hébergeur), du type admin.monsite.com (ou .dev, si je suis en local).
Mais la création d'un DNS secondaire, ou bien la création d'une entrée dans httpd-vhosts.conf, ne me permet apparemment pas d'associer le nom d'hôte à autre chose qu'un répertoire, en l'occurrence : /www/monsite/application/modules/admin.
Alors que j'aurais plutôt besoin de lui associer une url, du type www.monsite.dev/admin...
Donc, une fois que j'ai créé cette entrée, et que je tape admin.monsite.dev dans mon navigateur, je tombe forcément dans le dossier du module, directement et sans passer par le index.php qui est à la racine de mon site...
Quelqu'un saurait m'aider à élucider ça svp?
Merci d'avance
Dernière modification par delorbe (10-10-2011 09:20:09)
Hors ligne
Bonjour,
Il faut que tu utilises les routes.
Tu ne changes pas ta structure apache, tu ajoutes juste ton sous domaine sur le même directory que ton site normal.
Ensuite, tu utilises le routeur hostname, qui va te permettre de définir un module/controlleur/action pour ton sous domaine.
Hors ligne
Bonjour Théocrite,
Je te remercie pour ta réponse.
Je ne connaissais pas le Zend_Controller_Router_Route_Hostname, je vais m'y intéresser de près.
D'ailleurs, il faut que je me penche sur les routes tout court, car j'ai besoin de mettre ça en place, mais je n'y suis jamais parvenu. J'arrive à créer mes routes, mais pas à les utiliser, je tombe sans cesse sur "page not found"...
Mais je vais faire des recherches dans le forum, et au besoin, je créerai un autre sujet à un endroit plus approprié que celui-ci.
Merci encore, et au passage, très joli site que tu as
Hors ligne
Wow, la doc officielle de Zend n'est vraiment pas mon amie, et ce depuis que j'ai commencé à apprendre ce framework...
J'ai donc suivi leur exemple, après avoir corrigé l'erreur du code fourni, et avoir adapté à mes besoins :
Dans la doc :
[lang=php] $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.users.example.com', array( 'controller' => 'profile', 'action' => 'userinfo' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static(''); $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
Il manque une parenthèse fermante à la toute fin.
Et j'ai donc mis dans mon bootstrap:
[lang=php] /** * Initialize routes * */ protected function _initRoutes(){ $frontController = Zend_Controller_Front::getInstance(); $router = $frontController->getRouter(); $hostnameRoute = new Zend_Controller_Router_Route_Hostname('admin.nv-webconcept.dev', array('module' => 'admin', 'controller' => 'index', 'action' => 'index')); $plainPathRoute = new Zend_Controller_Router_Route_Static(''); $router->addRoute('admin.nv-webconcept.dev', $hostnameRoute->chain($plainPathRoute)); }
Désolé pour l'indentation, j'ai pas réussi à avoir mieux...
Mon hosts contient bien une entrée 127.0.0.1 admin.nv-webconcept.dev
Mon httpd-vhosts.conf contient également une entrée qui pointe vers la racine de mon site.
Voici :
NameVirtualHost www.nv-webconcept.dev:80 <VirtualHost www.nv-webconcept.dev:80> ServerAdmin nicolas-vauche@wanadoo.fr DocumentRoot "C:/xampp/htdocs/www.nv-webconcept.dev" ServerName www.nv-webconcept.dev ServerAlias www.nv-webconcept.dev ErrorLog "logs/www.nv-webconcept.dev-error.log" CustomLog "logs/www.nv-webconcept.dev-access.log" combined </VirtualHost> NameVirtualHost admin.nv-webconcept.dev:80 <VirtualHost admin.nv-webconcept.dev:80> ServerAdmin nicolas-vauche@wanadoo.fr DocumentRoot "C:/xampp/htdocs/www.nv-webconcept.dev" ServerName admin.nv-webconcept.dev ServerAlias admin.nv-webconcept.dev ErrorLog "logs/admin.nv-webconcept.dev-error.log" CustomLog "logs/admin.nv-webconcept.dev-access.log" combined </VirtualHost>
Je tombe sur une erreur au chargement : "La page n'est pas redirigée correctement : Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas."
Si j'essaie de modifier la ligne :
[lang=php]$plainPathRoute = new Zend_Controller_Router_Route_Static('');
en ça :
[lang=php]$plainPathRoute = new Zend_Controller_Router_Route_Static('admin.nv-webconcept.dev', array('module' => 'admin', 'controller' => 'index', 'action' => 'index'));
ça aboutit à ma page d'accueil, tout bêtement.
Je sais que ce n'est pas cette modif qui ferait marcher mieux ma route, mais j'essaie de comprendre... et je suis largué
Dernière modification par delorbe (04-10-2011 18:08:33)
Hors ligne
Ayé, ça marche
Grâce à tes indications, Théocrite, merci encore!
Pour résumer :
- Le site : www.nv-webconcept.dev
- L'url de l'administration : admin.nv-webconcept.dev
- Mon module d'administration se trouve dans /application/modules/admin
Voici mon c:\windows\system32\drivers\etc\hosts :
127.0.0.1 www.nv-webconcept.dev 127.0.0.1 admin.nv-webconcept.dev
Voici mon c:\xampp\apache\conf\extra\httpd-vhosts.conf :
NameVirtualHost www.nv-webconcept.dev:80 <VirtualHost www.nv-webconcept.dev:80> ServerAdmin nicolas-vauche@wanadoo.fr DocumentRoot "C:/xampp/htdocs/www.nv-webconcept.dev" ServerName www.nv-webconcept.dev ServerAlias www.nv-webconcept.dev ErrorLog "logs/www.nv-webconcept.dev-error.log" CustomLog "logs/www.nv-webconcept.dev-access.log" combined </VirtualHost> NameVirtualHost admin.nv-webconcept.dev:80 <VirtualHost admin.nv-webconcept.dev:80> ServerAdmin nicolas-vauche@wanadoo.fr DocumentRoot "C:/xampp/htdocs/www.nv-webconcept.dev" ServerName admin.nv-webconcept.dev ServerAlias admin.nv-webconcept.dev ErrorLog "logs/admin.nv-webconcept.dev-error.log" CustomLog "logs/admin.nv-webconcept.dev-access.log" combined </VirtualHost>
Voici mon Bootstrap.php :
[lang=php] /** * Initialize routes * */ protected function _initRoutes(){ // Get router $router = Zend_Controller_Front::getInstance()->getRouter(); // Define admin hostname route $hostnameRoute = new Zend_Controller_Router_Route_Hostname('admin.nv-webconcept.dev', array('module' => 'admin', 'controller' => 'index', 'action' => 'index')); $plainPathRoute = new Zend_Controller_Router_Route_Static(''); $router->addRoute('adminHostnameRoute', $hostnameRoute->chain($plainPathRoute)); }
et ça marche
Merci encore
Hors ligne
De rien (c'est le cas de le dire, j'ai juste donné une piste !).
Désolé de ne pas t'avoir aidé plus, mais je voulais m'appuyer sur des bouts de codes que j'ai et auxquels je ne peux accéder depuis mon boulot... Et je n'ai pas eu le temps hier soir !
En tout cas merci d'avoir exposé ta solution !
Hors ligne
J'ai vu tellement de discussions qui ne terminaient ni par merci, ni par j'ai trouvé, encore moins par la solution clairement exposée, que je me suis souvent perdu dans mes recherches, dans dix mille fora différents, et je me suis souvent retrouvé à ne plus savoir ce que je cherchais au départ...
Pourtant, les fora ça sert à ça, non?
Maintenant, ils sont tous tellement pleins, et les moteurs de recherche intégrés sont souvent tellement nuls, qu'on ne trouve plus ce qu'on cherche, et qu'on se voit systématiquement répondre "fais une recherche"... Donc on lâche l'affaire.
Alors quand quelqu'un donne une piste, on le remercie, parce qu'il aide pour de vrai
Voilà, je vais pas polluer cette discussion, et j'espère qu'elle servira à quelqu'un d'autre.
A bientôt, pour d'autres problèmes :p
Hors ligne
Pages: 1