Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Tout nouveau avec Zend, setBaseUrl() me semblait on ne peut plus simple d'utilisation, et pourtant...
Voilà ma config. A la racine de mon serveur web, j'ai :
ZendFrameworkInAction/
- application/ contient bootstrap.php
- library/
- www/ contient .htaccess et index.php
Voici une url qui marche : http://localhost/ZendFrameworkInAction/www/place/browse
Et voici celle que que j'aimerais faire marcher : http://localhost/place/browse
J'ai donc rajouté une ligne dans mon bootstrap , avec un setBaseUrl() :
$frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(false); $frontController->setControllerDirectory(ROOT_DIR . '/application/controllers'); $frontController->setBaseUrl('/ZendFrameworkInAction/www');
Mais rien n'y fait, j'ai toujours un
404 Not Found The requested URL /place/browse was not found on this server.
J'ai donc loupé quelque chose, mais quoi ?
Merci pour vos lumières.
Hors ligne
Salut,
Quelles sont tes règles de ré-écriture dans ton .htaccess ou ta conf ?
Pour les sites en localhost j'utilise des alias dans un fichier .conf que j'include dans le httpd.conf (pas de .htaccess à promener).
Exemple :
<Location /monsite> # Règles de réécriture RewriteEngine On RewriteBase /monsite RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] AllowOverride All Order deny,allow Allow from all </Location> Alias /monsite "F:/PHPServer/website/www/monsite"
Dans ce cas là, ZF détecte normalement tout seul le baseUrl, même si par acquis de conscience je le paramètre quand même manuellement
A+ benjamin.
Hors ligne
Merci pour ta réponse.
Si je comprends bien, je dois supprimer mon .htaccess, et rajouter à la fin de mon httpd.conf :
<Location /ZendFrameworkInAction/www> # Règles de réécriture RewriteEngine On RewriteBase /ZendFrameworkInAction/www RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] AllowOverride All Order deny,allow Allow from all </Location> Alias /ZendFrameworkInAction/www "C:/wamp/www/ZendFrameworkInAction/www"
Ma première url est ok, mais j'ai toujours le même problème avec http://localhost/place/browse,
avec ou sans setBaseUrl dans mon bootstrap...
Rem - mon .htaccess était :
# Rewrite rules for Zend Framework RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* index.php # Security: Don't allow browsing of directories Options -Indexes
Hors ligne
Bon, si quelqu'un peut m'expliquer pourquoi setBaseUrl ne marche pas dans mon cas, il est le bienvenu.
En attendant, je vais passer par l'utilisation de virtual hosts, ce qui résout mon problème.
Hors ligne
Je ne suis pas un expert, mais à mon avis
$frontController->setBaseUrl('/ZendFrameworkInAction/www');
permet d'indiquer à l'application que la racine du site est la.
Mais ca ne permet pas d'indiquer au serveur (apache sans doutes) que http://localhost/ = http://localhost/ZendFrameworkInAction/www/
Hors ligne
Oui, c'est ce que je fais avec mes virtual hosts, qui me permettent de faire pointer différents localhosts (client1.localhost, client2.localhost, etc.) sur autant de répertoires racine.
Hors ligne