Url Rewriting - Confusion dossier virtuel / fichier homonyme

Nouveau WRInaute
Bonjour,

Je vais essayer d'être simple et concis. Je découvre l'url-rewriting depuis hier matin. Et je me heurte déjà à mes premiers soucis.

Ce que je souhaite : faire correspondre l'adresse virtuelle
"http://www.example.com/nous-contacter/" à
"http://www.example.com/index.php?page=nous-contacter"

Le fonctionnement du site est simple : la page index fait un include ($_GET[page].'.php'). Le fichier en question se trouvant donc à la racine. Le tout étant un peu plus protégé que cela mais je simplifie.

Le problème est en soi très simple, l'appel de
"http://www.example.com/nous-contacter/" (le répertoire physique n'existe pas)
revient à appeler
"http://www.example.com/nous-contacter.php"

Autrement le htaccess semble bien fonctionner, j'ai essayé d'appeler
"http://www.example.com/plop/"
en modifiant mon fichier index.php pour faire l'équivalent d'un include ('extension_'.$_GET[page].'.php') et là le fichier extension_plop.php est bien inclus, preuve que le paramètre est bien passé dans l'url.

A coté de ça j'ai essayé de virer le .htaccess et d'appeler,
"http://www.example.com/nous-contacter/"
et je retombe bien sur
"http://www.example.com/nous-contacter.php"

Cela viendrait du serveur ? mais à moins d'avoir raté une étape, je croyais que le htaccess passait en premier, l'url devrait donc être réécrite...

La solution serait de renommer les fichiers mais cela ne saurait être qu'une solution de dernier recours.

Ci-dessous le code de mon htaccess :

Code:
# Erreur 404
ErrorDocument 404 /index.php

# URL Rewriting
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
# Cas des fiches produits
	RewriteRule	(liste-)([0-9]+)(/fiche-produit)(/?) /index.php?page=fiche-produit&id=$2&nav=rech [L]
	RewriteRule	([0-9]+)(/fiche-produit)(/?) /index.php?page=fiche-produit&id=$1 [L]
	
# Rubriques standards
	RewriteRule	^([-a-zA-Z0-9_]{1,})(/?)$ index.php?page=$1 [L]
(les fiches produits fonctionnent à priori correctement)

Je suis navré de vous présenter de manière aussi brouillon, mais si ce post est brouillon c'est que mes idées sont aussi peu claires que mon énoncé.

Merci d'avance à ceux qui pourront me répondre.
Cordialement,

Matthieu
 
WRInaute accro
non, il me semble que la réécriture ne s'applique que si l'url ne peut être obtenue directement. Du moins c'est ce que j'ai remarqué sur mes différents sites.
 
Nouveau WRInaute
Merci de ta réponse.

Finalement après quelques heures de recherches acharnées, la solution est venue. Un simple ajout de Options -MultiViews a suffi à régler mon problème.

Ce qui fait que l'appel d'un fichier sans son extension renvoie une erreur 404, le .htaccess fonctionne donc.

Bonne continuation. :)
 
WRInaute accro
djaezeris a dit:
Un simple ajout de Options -MultiViews
le problème, c'est qu'il faudra absolument qu'il y ait la bonne extension dans l'url, s'il n'y a pas de réécriture dans htaccess, et qu'on appelle www.example.com/toto on aura une belle erreur 404 quand bien même toto.php ou toto.htm existerait :cry:
 
Nouveau WRInaute
C'est la que le ErrorDocument 404 /index.php intervient selon moi, sachant que si le fichier index.php est inaccessible, c'est le site entier qui tombe...

Cela me semblait une solution plutôt honnête ?
 
Discussions similaires
Haut