Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Voilà j'ai suivi différents tutos (sur developpez.com et sur kitpages) sur l'utilisation du modèle MVC avec ZF.
Mais à chaque fois, j'ai le même problème : l'IndexController fonctionne, mais c'est le seul.
Si je met par exemple http://localhost/monsite/uncontroller/uneaction/ (avec bien évidemment la classe et le méthode qui vont bien), j'ai l'erreur suivante :
400 Bad Request
Your browser sent a request that this server could not understand.
Et ce, même en prenant directement le fichier zip de ce tuto : http://www.kitpages.fr/zf_tutorial.html
Pour info, je test sur WampServer (sous windows, donc).
Mon htaccess, repris sur le post de Bast (qui semblait avoir un problème proche, mais ça n'a résolu que le problème de l'url racine, c'est-à-dire : .../monsite/ ) :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
php_flag magic_quotes_gpc off
php_flag register_globals off
Voilà, si quelqu'un a une idée... merci d'avance !
Dernière modification par nath (19-06-2007 10:16:16)
Hors ligne
Bonjour nath,
J'ai changé (et simplifié) les tutos Kitpages pour les versions 1.0RC.
Pour ton Bad Request, j'ai vu sur un forum un gars qui disait que chez son hébergeur il avait cette erreur (alors qu'il ne l'avait pas chez lui). Il avait cette erreur uniquement quand il laissait un "/" à la fin de son URL.
Bref :
http://localhost/monsite/uncontroller/uneaction/ lui renvoyait une erreur
alors que :
http://localhost/monsite/uncontroller/uneaction fonctionnait.
Perso je n'ai jamais eu cette erreur...
A+, Philippe
PS : le lien du gars en anglais : http://usingzendframework.blogspot.com/ … ework.html
Hors ligne
Merci Philippe. Ton lien m'a donné la réponse, et c'est peut-être une chose à mettre sur ton tuto (à moins que je ne l'ai pas vu).
Sur le lien, j'ai remarqué dans le htaccess un "RewriteBase /".
Ca n'a pas marché pour moi, mais en mettant "RewriteBase /monsite/" ça marche !
Bon, j'imagine que ça dépend de la config (est-ce à cause de l'utilisation d'un alias ?), donc pas à faire systématiquement, mais ça peut être une solution.
Bien, maintenant, je vais pouvoir poursuivre mon exploration du ZF
Hors ligne
Bonjour,
Je suis en train de tester le framework, j'ai lu les mêmes tutoriaux que nath, je travaille également sous wamp donc sous windows pour essayer. J'ai exactement le même problème, a savoir que l'IndexController fonctionne , mais c'est le seul... aucun autre ne marche et j'ai la même erreur 400.
J'ai bien essayé un "RewriteBase /monsite/" mais ca ne résoutpas le problème malheureusement :s
Nath (si tu repasses voir le message) ou quelqu'un d'autre ayant le même problème : y a t-il autre chose à faire?? j'avoue que je suis un peu bloqué par ce problème
Hors ligne
Bonjour,
C'est mon premier message sur un forum de toute ma vie, car là je suis vraiment bloqué !
je sais que cette dscution date mais j'ai exactement le même probleme avec la version 1.5, j'utilise WampServer.
j'ai repris toutes les version de boostrap possible, tous les types d'écriture de règle pour le fichier .htacces.
Et toujours cette erreur HTTP 400.
Il y a 2 points positifs :
- En faisant un forward dans une action de l'indexController, j'atteinds mon autre controleur. (Mais Bon c'est moyen ! )
- En bidouillant dans tous les sens (Setter le pathBase, instancier un router, déclarer des route static ... Et autre) j'atteinds mon autre controlleur mais je dois inserer /index/ entre monDomaine et le controleur.
Si quelqu'un a une idée... Parce que là je déprime
Hors ligne
Tu es chez quel hébergeur ?
Tu peux nous envoyer ton .htaccess, ton index.php et l'URL que tu appelles ?
là on manque un peu de billes pour te répondre
A+, Philippe
Hors ligne
Pour l'instant je suis en local avec Wampserver.
http://localhost/zfTest => KO
http://localhost/zfTest/index => OK
http://localhost/zfTest/index/index => OK
http://localhost/zfTest/user => KO
http://localhost/zfTest/user/index => KO
http://localhost/zfTest/user/user => KO
1°
Voici donc mon arbo :
zfTest/application/controllers
/modules/default
/views/script
/public/index.php
/.htaccess
2° mon fichier .htaccess:
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
3° mon index.php
<?php // Error reporting error_reporting(E_ALL|E_STRICT); date_default_timezone_set('Europe/Paris'); ini_set('display_errors','on'); // Modify the include_path ini_set('include_path',ini_get('include_path') . PATH_SEPARATOR . '../lib/libraryZF' . PATH_SEPARATOR . '../application/controllers' ); // Zend Framework includes require_once "Zend/Loader.php"; Zend_Loader::loadClass('Zend_Controller_Front'); Zend_Loader::loadClass('Zend_Config_Ini'); //Zend_Loader::loadClass('Zend_Controller_Router_Rewrite'); // Initialize config.ini $configErr = new Zend_Config_Ini('..\application\config.ini', 'conf'); //$configRoute = new Zend_Config_Ini('..\application\config.ini', 'route'); //Create a router //$router = new Zend_Controller_Router_Rewrite(); //$router->addConfig($configRoute, 'routes'); // Supprime les routes par défaut //$router->removeDefaultRoutes(); // Get the front controller instance $front = Zend_Controller_Front::getInstance(); $front->setBaseUrl('/public/'); $router = $front->getRouter(); // retourne un routeur de réécriture par défaut $front->setRouter($router); $front->setControllerDirectory(array('default' => '../application/controllers' ) ); // Define config if($configErr->dev){ $front->throwExceptions(true); }else{ $front->throwExceptions(false); } /* require_once 'Zend/Controller/Request/Apache404.php'; $request = new Zend_Controller_Request_Apache404(); $front->setRequest($request); */ // GO GO GO ! $front->dispatch(); //Zend_Controller_Front::run('../application/controllers');
Voilà, Merci.
Hors ligne
Je n'ai pas regardé ton code en détail, mais tu peux changer
$front->setBaseUrl('/public/');
par
$front->setBaseUrl('/zfTest/');
et nous dire si ça marche ?
A+, Philippe
Hors ligne
Bonjour,
Dsl, j ai pas eu beaucoup de temps...
Mais j'ai testé et malheureusement... Sans effet.
.(
Hors ligne
Pour information, le / en fin d'URL est lié à la configuration du serveur web.
Il est rajouté automatiquement lorsqu'il s'agit d'un répertoire.
Avec apache, c'est le module mod_dir qui fait cela.
Lorsque le module est actif, c'est option est active par défaut.
L'option ne fonctionne plus lorsque DirectorySlash Off est présent
Hors ligne