Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour je lis le tutoriel http://g-rossolini.developpez.com/tutor … k/debuter/ et ya une phrase que je comprends pas et j'aimerais une explication plus ample. C'est la suivante :
La commande RewriteRule est vraiment simple et peut être interprêtée comme "pour toute URI qui ne correspond
pas à un fichier existant sur le disque, utiliser index.php à la place".
Merci d'avance!
Dernière modification par terrorist (13-07-2010 12:16:47)
Hors ligne
quand tu tapes dans un navigateur :
http://monsite.fr/toto/tata.php
naturellement, apache va regarder s'il existe un fichier dans documentRoot/toto/tata.php (ton documentRoot étant configuré dans ta conf apache, c'est le répertoire de base de ton site).
Si le fichier existe, il va l'exécuter et te renvoyer la réponse.
Dans la conf apache, une rewrite rule ressemble à
RewriteRule condition_sur_l'url_demandée fichier_à_lancer_à_la_place_du_fichier_par_défaut
Donc si tu avais mis
RewriteRule toto/tata.php toto/titi.php
au lieu d'appeler toto/tata.php, il lancera toto/titi.php
Avec le ZF, quand on écrit
RewriteRule .* index.php
on dit à apache : "quelle que soit l'URL demandée (.*)" renvoie vers le fichier index.php
On lui dit également juste avant :
RewriteCond %{REQUEST_FILENAME} !-f
qui dit : "ignore la règle suivante si le fichier par défaut existe". Donc quand apache reçoit son URL, il calcule le fichier par défaut qu'il devrait lancer (le toto/tata.php de tout à l'heure). Si le fichier existe, il le lance et il ignore la rewrite rule. Si le fichier n'existe pas, il renvoie sur index.php.
A+, Philippe
PS : après relecture, je ne suis pas sur d'avoir été plus clair que la phrase de départ...
Hors ligne
Merci tu as vraiment bien expliqué. Juste une question.
Tout ça pour faire quoi exactement?à quoi ça sert?
Merci d'avance!
Hors ligne
Le but est de déclencher une redirection vers le router rewrite de ZF.
Une url Zend type suit le schéma /:module/:controller/:action/:paramName1/:paramValue1. Un exemple peut être /forum/sujet/lire/id/42.
Le DocumentRoot de ton application ne contient pas de répertoire 'forum', ni un sous répertoire 'sujet', etc, dans le répertoire 'public' d'une application ZF type. Si ce chemin ne représente rien d'existant dans l'arborescence du système de fichier, le serveur web renvoie une erreur 404. Le rewrite intervient pour cette raison. Brancher cette url qui n'existe pas physiquement sur une route qui dispatche sur l'architecture MVC.
En effet, l'url /forum/sujet/lire/id/42 va afficher le résultat de l'action lire du contrôleur sujet du module forum, et il existera un paramètre get nommé 'id' avec la valeur 42. Cette url a le même sens que cette url classique PHP /index.php?module=forum&controller=sujet&action=lire&id=42.
Cela exécute le code contenu dans la méthode SujetController::lireAction().
Je vais m'arrêter pour éviter d'embrouiller au cas où. En somme, cela permet une très grande liberté dans l'écriture d'une url. Ce qui peut être appréciable pour du référencement ou avoir une url simple à retenir.
Hors ligne
Merci beaucoup, je pense que je comprends bien maintenant.
Merci encore une fois pour tous ceux qui m'ont répondu
Hors ligne
comment mettre cette discussion résolu?
Hors ligne
Tu édites ton 1er messages et tu ajoutes [Résolu] devant le titre.
A+, Philippe
Hors ligne