Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonsoir à tous,
Voila j'ai décidé de me mettre à Zend, et j'ai un petit problème...
Mon controller par defaut (IndexController) ainsi que la vue (indexAction) sont exécutés, mais il m'est impossible d'exécuter d'autres controllers mis a part l'index ("Not Found"). Si quelqu'un peut m'éclairer ca serait tres gentil.
mon .htaccess :
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
mon architecture :
Et mon bootstrap :
<?php error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 1); date_default_timezone_set('Europe/Paris'); // mise en place des répertoires et chargement des classes set_include_path('.' . PATH_SEPARATOR . './library' . PATH_SEPARATOR . './application/models/' . PATH_SEPARATOR . get_include_path()); include "Zend/Loader.php"; Zend_Loader::registerAutoload(); // setup controller $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('./application/controllers'); Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts')); // run! $frontController->dispatch();
Merci pour votre aide...
Hors ligne
Salut,
je peux me tromper, mais je pense qu'en remplaçant tout simplement ça :
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
par ça :
RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php
ça devrait aller nettement mieux.
Si tu me confirmes que ça marche, promis, je t'explique
Dernière modification par gauthier (11-12-2008 23:13:32)
Hors ligne
Salut,
Ca ne marche toujours pas... mais je veux bien que tu m'expliques quand même stp... Merci...
Hors ligne
essaye ça pour le htaccess :
# Règles de réécriture pour Zend Framework RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php
Hors ligne
Bonjour teknomaniak,
A priori tous les .htaccess (ainsi que le tien) sont bons (pour différentes raisons, je te laisse fouiller dans le forum, il y a pas mal d'explications sur le fonctionnement des rewrite url).
Par contre ton arbo est bizarre : ton index.php a priori devrait être dans le répertoire public/
Quelle URL appelles-tu ?
Sur quel répertoire pointe ton apache ?
Est-ce que dans ta conf apache tu as un allowoverride all ?
A+, Philippe
Hors ligne
Bonjour...
En fait, mon fichier index.php est au même niveau que application, library, public dans un répertoire nommé jhnew. J'appelle l'url 127.0.0.1/
Mon apache pointe sur /www/jhnew
Pour allowoverride all ==> non
Merci
Hors ligne
A priori ça serait une bonne habitude de mettre ton index.php dans public et de faire pointer apache vers ce répertoire public/.
A court terme ça n'est pas ça qui bloque.
Par contre, il faut ajouter un AllowOverride All dans ton apache. Sinon tes .htaccess n'ont pas le droit de modifier les rewrite de ta conf apache de base (celle de httpd.conf). C'est pour ça que tu n'as pas de réécriture je pense.
A+, Philippe
Hors ligne
ou faut il mettre AllowOverride All ??
Hors ligne
Tu dois avoir une section <Directory "/www/jhnew"> quelque part dans ton httpd.conf. Tu mets AllowOverride All dedans.
A+, Philippe
Hors ligne
Effectivement pour la section...
mais quand j'ajoute la ligne en question et ben ..... => "La connexion a échoué" :-=
Hors ligne
hello,
voilà ce qui me chagrinait dans tes RewriteRule :
RewriteRule ^.*$ - [NC,L]
semble indiquer que toutes les URL (^ = début ; .* = n'importe quoi ; $ = fin) devaient être transmises telles quelles (signification de "-"). Le [L] indique également qu'aucune autre règle ne doit être appliquée ensuite.
En résumé, tes rewrite rules ne servaient à rien C'est encore plus vrai si tu n'as pas autorisé leur application à l'aide de la directive AllowOverride. Consulte les logs d'Apache pour en savoir plus (habituellement /var/logs/apache ou similaire sous GNU/Linux)
Bon courage
Hors ligne
Pages: 1