Condition qui ne fonctionne pas

Nouveau WRInaute
Bonjour,

J'utilise pour mon site le Zend Framework, qui utilise le fichier .htaccess suivant pour fonctionner :

Code:
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.monsite\.tld$
RewriteRule ^(.*)   http://www.monsite.tld$1  [QSA,L,R=301]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

Cependant, je veux utiliser un forum non construit avec Zend, qui se trouve dans un répertoire enfant "forum".

J'ai donc rajouté la condition :

Code:
RewriteCond %{HTTP_HOST} !^www\.monsite\.tld/forum/(.*)$

Avant la réécriture de Zend, ce qui donne le fichier .htaccess suivant :

Code:
RewriteCond %{HTTP_HOST} !^www\.monsite\.tld/forum$
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

Or quand j'essaye de joindre la page www.monsite.tld/forum/index.php ; je recois l'exception Zend d'où => Ma condition ne fonctionne pas ; elle renvoi toujours "vrai".
 
WRInaute accro
Tu te prends la tête :)
J'utilise, sur mes projets PHP, cet htaccess : http://www.dmathieu.com/2008/06/16/rediriger-toutes-les-url-non-exista ... e-fichier/
Ainsi, toutes les URL qui n'existent pas sont redirigées vers ton application. Lorsque le fichier existe en dur, celui-ci est appellé.

Inutile de faire une exception pour chacun de tes fichiers en dur.
Dans la théorie, le htaccess par défaut du ZF (que tu utilise) fonctionne de la même manière. Mais j'ai également constaté quelques problèmes avec.

Pour finir, il est normal avec
Code:
RewriteCond %{HTTP_HOST} !^www\.monsite\.tld/forum$
lorsque tu charge la page /forum/index.php, la condition n'est pas correcte.

Le $ signifie que tu doit être à la fin de ta chaine. Il ne peut donc y avoir aucun autre caractère après le /forum
Pour que cela fonctionne, il faudrait :
Code:
RewriteCond %{HTTP_HOST} !^www\.monsite\.tld/forum
Mais encore une fois, tu n'en a pas besoin. Avec ce que je t'ai donné plus haut, tout fichier existant en dur sur dans ton dossier public sera accessible.
 
Nouveau WRInaute
Ok ma condition est futile.
D'autre pars, je ne comprends pas pourquoi ce htaccess envoyé tout de même sur index.php alors que le fichier existé :

monsite.tld/forum/index.php, je l'ai fais ça ne fonctionnait pas, alors que les direction de ce htaccess sont similaires à celui que tu me suggère !
 
WRInaute accro
HTTP_HOST ne contient (comme son nom l'indique bien) que le nom de domaine (www.monsite.tld), pas le chemin. Comme de toutes façon ça c'est déjà géré avant, ce qui compte, c'est plutôt le chemin, auquel tu n'accèderas normalement pas via RewriteCond (même si tu peux le faire via REQUEST_URI), mais via une RewriteRule dédiée (avec le bon flag pour dire qu'on s'arrête là et qu'on n'évalue pas les suivantes).

Jacques.
 
Discussions similaires
Haut