[Wamp] Problème Réecriture d'adresse / fichiers locaux

Mammouth du PHP | 1511 Messages

28 nov. 2010, 15:46

Bonjour,
je rencontre un petit problème dans mon dévellopement actuel.
Ma réecriture d'url se présente comme suit, ayant un routeur personnalisé dans mon framework:

Code : Tout sélectionner

Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L]
Mon racine se présente comme suit:
Image
Hors, quand j'appelle http://localhost/test, au lieu d'être redirigé vers mon routeur, je suis dirigé vers test.php.
Est-ce un comportement normal ? Car même en appellant http://localhost/test/foo je tombe sur test.php.

Problème de configuration apache ?

Merci d'avance. :)

devlop78
Invité n'ayant pas de compte PHPfrance

28 nov. 2010, 18:41

J'ai cette difficulté de comprendre ... Mais regarde si le module rewrite est activé coté Apache ... car WampServer ne l'active pas par défaut il me semble

Mammouth du PHP | 1511 Messages

29 nov. 2010, 13:20

Justement, le module rewrite est activé, sinon j'aurais une belle erreur 500.

devlop78
Invité n'ayant pas de compte PHPfrance

29 nov. 2010, 19:23

OOOo mince. J'avais pas bien regardé. Mais bien sûr qu'il t'ouvre test.php puisque celui-ci existe. Selon la configuration de Apache et/ ou Php (en vérité, je ne sais pas exactement d'ou ça vient), "monFichier" appelera si existe le dossier "monFichier", puis le fichier "monFichier". Il existe aussi des astuces pour faire de l'url rewriting sans le module d'apache avec ce genre de chose (par exemple monFichier/machin).

Dans ton cas, ça marche et c'est relativement normal. C'est certainement désactivable, c'est une option il me semble. Si tu veux faire une redirection même si le fichier et/ou dossier existe, tu dois enlever la condition -f et -d.

Cordialement,

Mammouth du PHP | 1511 Messages

30 nov. 2010, 12:05

Justement, je veux qu'il ne redirige vers mon routeur que si le fichier existe...
Comment désactiver le fait qu'il ne prenne pas en compte l'extension ?

devlop78
Invité n'ayant pas de compte PHPfrance

30 nov. 2010, 12:53

Je sais pas ce que c'est que cette histoire de routeur, mais j'ai peur que le terme soit mal approprié.

Peut-être Options FollowSymLinks

Mammouth du PHP | 1511 Messages

30 nov. 2010, 13:12

Mon routeur c'est le script qui va decrypter et orienter les requetes vers la bonne partie de mon programme php.
FollowSymLinks c'est pour prendre en compte les liens symboliques sous unix, je l'ai laissé pour ne pas galérer quand je vais transferer sur mon serveur.

devlop78
Invité n'ayant pas de compte PHPfrance

30 nov. 2010, 13:45

Oui ... je ne sais pas. Moi j'ai un seul fichier qui est index.php et qui régit tout (c'est l'appel du controleur principal). Les autres fichiers, je les mets dans un autre dossier, où il n'y aura pas de confusion avec une réecriture, et que je mets en deny from all. Bref, c'est une présentation simplifiée, mais ne te compliques-tu pas la vie ?

Mammouth du PHP | 19672 Messages

04 déc. 2010, 00:16

Salut,
vérifie dans le fichier httpd.conf si pour le répertoire racine (directory root) la directive AllowOverride est à « None » ou « All » et selon le cas permet ou non la surcharge des directives via un fichier .htaccess. Si elle est à « None », remplace par All, enregistre et redémarre ton serveur Apache.

Normalement tous les appels vers le répertoire de ton application devraient rediriger vers le fichier index.php qui lui-même devra contenir le code gérant le routage.

Il manque toutefois une ligne dans ton fichier .htaccess :

Code : Tout sélectionner

RewriteBase X://www
Où « X/www » correspond à la racine de ton serveur, le chemin vers ton répertoire /www.e
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1511 Messages

05 déc. 2010, 02:45

Je viens de trouver mon erreur...
J'avais mis l'option Multiviews sur le repertoire virtuel...
Ce qui engendrait ce comportement...
Voir http://httpd.apache.org/docs/2.0/fr/con ... multiviews