Besoin d'aide concernant le Mod Rewrite d'Apache et .htaccess [Résolu]

Signaler
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011
-
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011
-
Bonjour à tous,

J'ai besoin d'aide concernant le Mod Rewrite d'Apache.

J'arrive à faire plus ou moins ce que je veux suite à plusieurs recherche mais j'ai encore une ou deux difficultées.

Je m'explique,

Mon url est composée de la façon suivante.

http://www.monsite.com/index.php?module=MONMODULE&action=MONACTION

Le nom du module est obligatoire mais pas l'action. Si celle-ci n'est pas mentionnée ont est redirigé vers la page par defaut du module.

Actuellement la règle suivante :

RewriteRule ^(.+)/(.+)\.html$  index.php?module=$1&action=$2  [L]

me donne http://www.monsite.com/MONMODULE/MONACTION.html

et celle-ci :

RewriteRule ^(.+)\.html$  index.php?module=$1 [L]

me donne http://www.monsite.com/MONMODULE.html

Mais si on indique comme url http://www.monsite.com/MONMODULE sans le html ainsi que http://www.monsite.com/MONMODULE/ on obtient une page d'erreur 404 ce qui n'est voulu.

J'aimerai que

http://www.monsite.com/MONMODULE.html
ET
http://www.monsite.com/MONMODULE
ET
http://www.monsite.com/MONMODULE/

Corresponde à http://www.monsite.com/index.php?module=MONMODULE

et que

http://www.monsite.com/MONMODULE/MONACTION.html

ET

http://www.monsite.com/MONMODULE/MONACTION

ET

http://www.monsite.com/MONMODULE/MONACTION/

Corresponde à http://www.monsite.com/index.php?module=$1&action=$2

Je me doute qu'il doit y avoir quelque chose qui manque comme une condition X ou Y mais je ne vois pas comment la retranscrire.

Voici le contenu de mon .htaccess

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^(.+)/(.+)\.html$  index.php?module=$1&action=$2  [L]
RewriteRule ^(.+)\.html$  index.php?module=$1  [L]

Merci à vous pour votre aide.

Matt.

2 réponses

Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
Ceci "^(.+)\.html$" ne gère que les URL comme ceci "http://www.monsite.com/MONMODULE.html". Si tu enlèves le .html, ça ne correspond plus à ton expression que tu as dans ton htaccess et il ne sera pas du tout transformé (donc une erreur 404).

Ce que je te propose c'est de changer ton "\.html" par "(\.html|\/)?" dans tes 2 expressions pour qu'il prenne en charge les 2 autres synthaxe que tu veux.
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011

Salut Arto_8000,

Tout d'abord merci à toi de m'avoir répondu.

J'ai suivi ta proposition et je l'ai adaptée car pour

RewriteRule ^(.+)/(.+)(\.html|\/)?$  index.php?module=$1&action=$2  [L] dans le .htaccess

module valait toujours -> index.php et action valait que dalle.

Mais en enlevant le ? dans l'expression, celle-ci fonctionne parfaitement.

Encore merci à toi d'avoir pris le temps de me répondre.

Bien à toi.

Matt.