Bizarre - Rewriting d'expression "erm"

  • Auteur de la discussion Auteur de la discussion Chien
  • Date de début Date de début
Nouveau WRInaute
Bonjour,
Je suis en train de faire un test d'url rewriting et je rencontre un problème épineux dont mes nombreux tests ne parviennent pas à venir à bout.

L'UR est du type: RewriteRule ^([a-z-]+).html$ index.php?variable=$1

A ma grande surprise, l'URL rewriting ne marche pas bien quand il y a une voyelle suivie de rm.

Exemple:

Avec le fichier doberman.html >> mon URL rewriting ne marche pas bien :(
Avec chien.html ou tralala.html, cela fonctionne sans problème...

Attention, c'est assez particulier, si doberman.html est appelé depuis une page du serveur, il s'affiche, si je le tape directement dans le navigateur.... il me met un 404...

J'ai testé avec erm.html , arm.html , irm.html... et c'est à chaque fois pareil... bref, à chaque fois qu'il y a une voyelle précédent un rm.html dans le nom du fichier, ça le fait apparemment.

J'aurais aussi bien pu ne pas le voir... mais je l'ai vu... et ce n'est en soi pas gravisssime, mais ça fait des heures que je cherche à comprendre... et je n'y parviens pas ... Si vous avez une idée du pourquoi du comment... Merci beaucoup par avance.
 
WRInaute occasionnel
Salut chien,

Mon experience longue de programmeur de langage diverse et varié m'ont appris qu'il ne faut pas focaliser sur une vision du bug.

D'abord si tu peux nous dire quel est ton hébergeur, on pourra peut être te certifier qu'il n'y a pas de problème particulier.

Ensuite si tu peux installer Apache sur ton ordi en local pour les tests ça serait un plus.

Sinon cherche une autre voie, je vois mal le moteur de l'expression réguliére avoir un bug de ce genre :lol:

Enlève aussi ton - dans [a-z] pour voir...

Tiens nous au courant merci.
 
Nouveau WRInaute
Merci de ta réponse macjee :D

a priori, le problème doit venir de mon script et on pourra pas m'aider car,

j'ai testé ce .htaccess avec des pages vides doberman.php et tralala.php .

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^doberman.html$ doberman.php
RewriteRule ^tralala.html$ tralala.php

et là cela fonctionne

Ensuite j'ai retesté avec

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.+)\.html$ var.php?var=$1

et une page var.php avec <? echo $var ?> dedans

et là cela fonctionne encore

... mais pas avec mon script ... donc ça vient probablement de mon script.... Et ce n'est pas gagné de trouver le bug... :(

la suite voyelle + rm correspond-elle à une fonction php ou autre ... en cherchant les suites de caractères "rm" de mon script... je trouve toujours rien :((

allez j'y retourne...
 
Nouveau WRInaute
(Pour info la plateforme de test est ovh)

Bon bien après test et retest... l'exemple que je donné ci dessus... et bien parfois il marche... parfois il ne marche pas... ?!

donc finalement certainement pas un problème de script mais probablement un pb de config serveur.

sous unix, la commande rm est utilisée pour effacer un fichier - je suis pas téchos mais ça doit être lié.

toujours des fichiers mêmes vides ... dès qu'il y a Voyelle suivie de rm.html... le fichier est pas trouvé ... ?:( Mystère...
 
WRInaute occasionnel
Tu es en mutualisé sur OVH ou pas ? Car en mutualisé je n'ai eu aucune problème avec l'url rewriting...
 
Nouveau WRInaute
macjee a dit:
Tu es en mutualisé sur OVH ou pas ? Car en mutualisé je n'ai eu aucune problème avec l'url rewriting...

Merci macjee d'avoir répondu . C'est appréciable :wink:

j'ai trouvé! bon c'est simple en fait... c'est la suite du .htaccess qui pose problème

le script anti hotlink était :

Code:
<FilesMatch ".(jpg|png|mpeg|rm|mpg|avi)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
en le changeant en

Code:
<FilesMatch ".(jpg|png|mpeg|mpg|avi)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

(j'ai enlevé le rm entre les 2)

... plus de problème. En même temps, j'ai du mal à comprendre pourquoi car ça ne devrait rien avoir à voir avec ça... mais ça marche alors... hein? des fois?
 
WRInaute occasionnel
Re, je crois sans me tromper que le problème vient du point dans le code suivant

Code:
<FilesMatch ".(jpg|png|mpeg|rm|mpg|avi)">

Il faut que tu mettes \. car sinon le point signifie n'importe quel caractére.

Voilà finalement tu vois que ça venait pas du serveur !! ah les bugs !! on pourrait écrire des livres philosophiques dessus :wink:
 
WRInaute occasionnel
Parce que la directive FilesMatch prend une expression régulière comme argument. Or le . dans une expression régulière représente n'importe quel caractère. Essaie avec jpg dans ton nom de fichier, le problème devrait être le même.

Code:
<FilesMatch "\.(jpg|png|mpeg|rm|mpg|avi)$"> 
Order Allow,Deny 
Allow from env=local_ref 
</FilesMatch>
devrait fonctionner mieux.
 
Nouveau WRInaute
Exact !

avec ce code

Code:
<FilesMatch "\.(jpg|png|mpeg|rm|mpg|avi)$"> 
Order Allow,Deny 
Allow from env=local_ref 
</FilesMatch>
ça marche!

C'était donc un problème de syntaxe.

Merci encore de votre participation :wink:
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut