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éécriteEn 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