Prb Apache 2.0.45 et mod_rewrite

Nouveau WRInaute
Bonjour,

j'ai déjà mis un post la semaine dernière concernant un problème de casse avec apache 1.3.27 sous windows. Je ne suis jamais arrivé à passer outre ce problème alors que sous un serveur web linux, tout passe sans problème.

Etant donné que cela marche sous linux et qu'après de nombreuses recherches je ne suis pas parvenu à trouver la solution, je me suis dit qu'il fallait essayer de passer à la dernière version d'apache.

Du coup je l'ai installé et là horreur, je n'arrive même plus à faire fonctionner un exemple de base.
Le module mod_rewrite.so a pourtant bel et bien été activé dans le httpd.conf. Le fichier .htaccess ressemble à ceci :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^trouve.html$ index.php [L]

J'ai également activer le fichier des erreur avec un niveau à 9, qui devrait me rapporter un max d'infos et il ne me retourne que ceci :
Code:
127.0.0.1 - - [12/May/2003:17:09:49 +0200] [127.0.0.1/sid#23bc68][rid#470ec0/initial] (2) init rewrite engine with requested uri /dev/scripts/scripts/trouve.html
127.0.0.1 - - [12/May/2003:17:09:49 +0200] [127.0.0.1/sid#23bc68][rid#470ec0/initial] (1) pass through /dev/scripts/scripts/trouve.html

Avez vous une idée de ce qu'il se passe?
 
Nouveau WRInaute
ok

Ok le problème était que dans le httpd.con la ligne suivante était insérée :
AllowOverride None

Or cette ligne interdit la mise en place du fichier .htaccess.
En la mettant à :
AllowOverride All

le problèmé est résolu.

Et le must du must, avec apache 2.0.45, la casse des urls est enfin respéctée!!!
 
WRInaute passionné
Bonjour,

Tu ne précises pas où se trouve cette règle.. dans le .htaccess de la racine ou dans un sous répertoire ?

Selon ton log, tu cherches à remplacer une url commençant par trouve.html alors que le moteur reçoit /dev/scripts/scripts/trouve.html
soit tu supprimes le ^ de ta règle,
soit tu ajoutes la ligne suivante (après RewriteEngine on):
RewriteBase /dev/scripts/scripts/

Dan
 
WRInaute occasionnel
djwo a dit:
Bonjour,

j'ai déjà mis un post la semaine dernière concernant un problème de casse avec apache 1.3.27 sous windows. Je ne suis jamais arrivé à passer outre ce problème alors que sous un serveur web linux, tout passe sans problème.

Etant donné que cela marche sous linux et qu'après de nombreuses recherches je ne suis pas parvenu à trouver la solution, je me suis dit qu'il fallait essayer de passer à la dernière version d'apache.

Du coup je l'ai installé et là horreur, je n'arrive même plus à faire fonctionner un exemple de base.
Le module mod_rewrite.so a pourtant bel et bien été activé dans le httpd.conf. Le fichier .htaccess ressemble à ceci :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^trouve.html$ index.php [L]

J'ai également activer le fichier des erreur avec un niveau à 9, qui devrait me rapporter un max d'infos et il ne me retourne que ceci :
Code:
127.0.0.1 - - [12/May/2003:17:09:49 +0200] [127.0.0.1/sid#23bc68][rid#470ec0/initial] (2) init rewrite engine with requested uri /dev/scripts/scripts/trouve.html
127.0.0.1 - - [12/May/2003:17:09:49 +0200] [127.0.0.1/sid#23bc68][rid#470ec0/initial] (1) pass through /dev/scripts/scripts/trouve.html

Avez vous une idée de ce qu'il se passe?

je vais peut etre dire une grosse connerie mais ta regle est pas bonne ...

^ signefie debut de ligne et $ signifie fin de ligne .. donc toutes les urls qui commance part t contiens rouve.htm et fini par l sera interprete comme une url a reecrire ...

je dirais qu'une regle comme suis:
^*?trouve.html$ marcherais mieux .. mais j'en suis pas sur ...

voila ...
 
Nouveau WRInaute
Je ne sais pas trop en quoi influe les sépareurs de début et de fin de ligne, j'ai vu dans ce forum que cela posait pas mal de problème (en tout cas sous windows). Mais l'exemple que je cite ici est au caractère rès celui qui est donné en exemple dans le tutorial de webrankinfo.

Si quelqu'un veut bien expliquer leur réelle signification...

Pour répondre à Dan, le fichier htaccess était bien à la racine. C'était vraiment un problème de droits à régler dans le httpd.conf (tout fonctionne à merveille maintenant, meême en laissant le ^).
Mais effectivement l'erreur que soumet le fichier log du mod rewrite ne permettait pas d'appréhender facilement l'erreur.

Je vous remercie vivement tous les deux pour votre contribution...

A+
 
WRInaute passionné
zehunter a dit:
je vais peut etre dire une grosse connerie mais ta regle est pas bonne ...
je dirais qu'une regle comme suis:
^*?trouve.html$ marcherais mieux .. mais j'en suis pas sur ...
Elle n'est pas très grosse, mais c'en est une. Ta règle est pire ! :lol:

Dans ton exemple, le caractère ^ ne sert à rien, pas plus que le ? d'ailleurs ... et si tu veux faire un "match" de n'importe quel caractère, c'est .* et non * tout seul.
Cela fait beaucoup à redire sur 3 caractères... :wink:

Si on veut réécrire les URLs qui se terminent par "cherche.html" , il est inutile de mettre quoi que ce soit devant, donc:
Code:
RewriteRule cherche.html$ trouve.html
suffit largement et est équivalent (en plus rapide) aux règles
Code:
RewriteRule .*cherche.html$ trouve.html 
RewriteRule ^.*cherche.html$ trouve.html
Dans ces dernières règles, il est inutile de rechercher le début de l'URL, et tous les caractères qui pourraient précéder le mot "cherche.html" car cela consomme des ressources inutilement et on n'en fait rien de toutes façons.
Elles sont néanmoins correctes en terme de syntaxe, ce n'est que la logique qui est prise en défaut et qui alourdit l'expression.

Dan
 
WRInaute passionné
Zehunter,

Pas de problème, mais les expressions régulières en Perl ne sont pas tellement différentes :wink:

Dan

PS: J'ai édité ton message comme il n'est pas utile de citer systématiquement l'intégralité du message auquel tu réponds.
 
Discussions similaires
Haut