Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'aimerais rajouter un site web sur mon architecture.
Voila l'existant :
var
--www
----site1
------htdocs
--------index.php
------application
------models
------views
------library
--------Zend
le documentRoot est /var/www/htdocs
j'utilise le rewrite sur index.php
j'aimerais rajouter un site2
j'ai mis en place cette architecture.
var
--www
----site1
------htdocs
--------index.php
------application
------models
------views
------library
--------Zend
----site2
------htdocs
--------index.php
Comment paramétrer Apache afin de faire cohabiter les 2 sites (en évitant d'utiliser les Virtual Host) ?
Hors ligne
Tu peux utiliser des "locations"
Si ton documentRoot pointe sur /var/www, tu peux ajouter des confs du type :
<Location /site1/htdocs> AddDefaultCharset UTF-8 RewriteEngine On RewriteBase /site1/htdocs RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !\.(js|ico|gif|jpg|png|css|html|swf|htm|txt) /site1/htdocs/index.php [L] </Location>
ensuite tu accèdes à tes sites avec http://localhost/site1/htdocs/
A+, Philippe
PS : cela dit, utiliser des virtualhosts et modifier ton /etc/hosts est souvent assez pratique...
Hors ligne
J'ai essayé de mettre comme documenRoot : /var/www
J'accede aux sites avec l'adresse : http://www/toto.com/site1
J'ai mon formulaire d'authentification, mais ensuite j'ai le message d'erreur suivant :
The requested URL / was not found on this server.
Je pensais que le problème pouvait venir de mon controller d'authentication qui fait un :
$this->_redirect('/');
Mais j'ai essayé pour tester de lui mettre un chemin en dur vers index.php du site1 et la : même message :
The requested URL / was not found on this server.
Hors ligne
ok merci philippe. Je teste
Hors ligne
j'ai essayé le methode de philippe,
<Location /site1/htdocs>
AddDefaultCharset UTF-8
RewriteEngine On
RewriteBase /site1/htdocs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css|html|swf|htm|txt) /site1/htdocs/index.php [L]
</Location>
j'appelle la page http://localhost/site1/htdocs
1) mon contrôleur d'identification est trouvé
2) a la redirection j'ai toujours le même message :
The requested URL / was not found on this server (même en mettant un chemin en dur dans le redirect).
J'ai l'impression que c'est le controleur frontal qui va chercher index.php à l'URL / ?
Comment savoir si c'est le cas ? Et si c'est le cas, comment les routes peuvent elle être adaptées à l'architecture du serveur ?
Hors ligne
Et si c'est le cas, comment les routes peuvent elle être adaptées à l'architecture du serveur ?
En utilisant le helper url() qui les génères en fonction du routeur et de la baseUrl spécifié au front controller.
Hors ligne
c'est un view helper ? je peux l'utiliser dans un controller ?
Hors ligne
Effectivement, regarde la méthode de Mr Moox. Le problème quand tu fais un redirect("/"), c'est qu'il te renvoie vers http://localhost/ et non http://localhost/site1/htdocs/
Vérifie aussi que dans ton bootstrap, tu as un $controller->setBaseUrl("/site1/htdocs");
A+, Phlippe
Hors ligne
C'est un view helper, tu peux donc l'utilise dans ta vue ainsi
$this->url(array( 'module' => '...', 'controller' => '...', 'action' => '...', 'param' => '...' ), 'nomDeLaRoute'); //default si pas de route réécrite
En conséquence tu peux l'utiliser dans ton controller via $this->view->url(...), comme tous les helpers de vue...
Après faut pas non plus abuser de l'utilisation des helpers de vue dans le controller hein
Mais bon dans ton cas je ferais (et fais) toujours ainsi
Hors ligne
ok,
juste une question :
pourquoi ne pas faire un
$frontController->setBaseUrl('/site1/htdocs');
dans le bootstrap
et puis un
$this->_request->getBaseUrl();
dans les controlleur pour récupérer le chemin ?
J'ai faux ou bien ?
Dernière modification par bertra (20-06-2008 16:27:24)
Hors ligne
bon... alors je ne comprend pas :
je fais un
$frontController->setBaseUrl('/site1/htdocs');
dans mon bootstrap
ensuite je fais un :
$this->view->baseUrl = $this->_request->getBaseUrl();
dans le init de mon controler
et la variable est vide
Hors ligne
bon...en fait ca fonctionne bien avec
$this->view->baseUrl = $this->_request->getBaseUrl();
Le probleme est que sur mon environnement de test le chemin est /, j'avais donc fait un
$frontController->setBaseUrl('/');
En faisant ça, la valeur de
$this->_request->getBaseUrl();
n'est pas "/" mais "", du coup je pensais que cela ne fonctionnait pas alors que si
je vais donc utiliser cette méthode. Merci.
Dernière modification par bertra (25-06-2008 15:06:11)
Hors ligne