Problème htaccess apache chez ovh

WRInaute discret
Bonjour,

Sur une dizaine de règles de rewriting, certaines persistent à ne pas fonctionner. Il s'avère que les règles qui ne fonctionnent pas sont celles pour lesquelles l'url et le fichier php portent le même nom.

En clair:
- cette règle fonctionne:
Code:
RewriteRule ^inscription$ signup.php [L]

- cette règle ne fonctionne pas comme je le souhaite:
Code:
RewriteRule ^tags$ tags.php [L]
RewriteRule ^tags/([a-z-]+)$ tag.php?tag=$1 [L]

Je constate les choses suivantes:
- en saisissant l'url /signup sans le .php, j'arrive bien sur signup.php C'est troublant, depuis quand l'extension du fichier est elle facultative (serveur OVH 90plan) ?
- en saisissant /tags j'arrive bien sur tags.php => CORRECT
- en saisissant /tags/coco je reste sur tags.php au lieu de tag.php?tag=coco => INCORRECT

Avez-vous des pistes pour m'aider ?
Merci
 
WRInaute passionné
Xophe a dit:
- en saisissant l'url /signup sans le .php, j'arrive bien sur signup.php C'est troublant, depuis quand l'extension du fichier est elle facultative (serveur OVH 90plan) ?
en effet, c'est pareil pour moi. c'est peut-être lié au module qui recherche des orthographes proches quand la page n'existe pas : (module speling).
sinon essaye d'inverser les deux règles.
 
WRInaute discret
Malheureusement, aucun changement après avoir inversé l'ordre des règles.

C'est vraiment surprenant.
 
Nouveau WRInaute
Salut!

Si ce bout de code fonctionne alors cela te permettra de trouver la solution :
RewriteRule tags/tag/([a-z-]*) tag.php?tag=$1

P.S.
Et pourquoi ça? : RewriteRule ^tags$ tags.php [L]
Chez OVH ils ont mis en place ce système (le fait de pouvoir afficher une page "index" sans son extension) au moment où les url sans extension sont devenues à la mode... ils se sont mis à la page... ;-)
 
Nouveau WRInaute
Tiens c'est marrant moi aussi en faisant des modif d'htaccess aujourd'hui, j'ai des GET qui passent pas... laors que d'autres passent sans pb.

j'ai resolu en changeant le nom de la redir :

c'etait:

# Livre d'or
RewriteRule ^livreor(/([0-9]+))?$ /livreor.php?page=$2 [L]

ca devient :

# Livre d'or
RewriteRule ^livredor(/([0-9]+))?$ /livreor.php?page=$2 [L]

J'ai modifie livreor en livredor... pas tres elegant comme solution. J'aimerai comprendre un peu mieux!
 
WRInaute discret
Pas le temps d'investiguer beaucoup plus. J'ai modifié le nom du fichier pour éliminer le problème.
 
WRInaute impliqué
Essaie de désactiver l'option MultiViews

L'effet de MultiViews est le suivant : si le serveur reçoit une requête pour /tel/répertoire/foo, si MultiViews est activée pour /tel/répertoire, et si /tel/répertoire/foo n'existe pas, le serveur parcourt le répertoire à la recherche de fichiers nommés foo.*, et génère une correspondance de types (type map) qui liste tous ces fichiers, en leur associant les mêmes types de média et encodages de contenu qu'ils auraient eu si le client avait demandé l'accès à l'un d'entre eux par son nom. Il choisit ensuite ce qui correspond le mieux aux besoins du client.

Bref, mettre

Code:
Options -MultiViews
 
Discussions similaires
Haut