problème réécriture avec un cms

WRInaute accro
Bonjour à tous,
je travaille actuellement sur le site d'un client qui était entièrement statique, et que je passe sous CMSMS afin de faciliter sa gestion.
Je rencontre un problème par rapport à la réécriture sur 3 pages de calculs dynamiques.
Voici la partie du htaccess posant problème :
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
RewriteRule ^([0-9]*)-(.*).html$ index.php?mact=News,cntnt01,detail,0&cntnt01articleid=$1&cntnt01origid=&cntnt01returnid=$2
#ancienne réécriture pour les page de calcul en php - c'est ici qu'il y a un problème je pense
RewriteRule ^credit-(.*)-(.*)-(.*)\.htm$ credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]
RewriteRule ^credit-(.*)-(.*)-(.*)\.html$ credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]
Quand je clique sur un lien qui est censé m'afficher la page dynamique de calcul, j'obtiens une 404.
Les règles doivent se téléscoper, mais je suis pitoyable en réécriture et expressions régulières, si quelqu'un à une idée ?

Merci d'avance pour toute suggestion.
 
WRInaute passionné
bproductiv a dit:
Code:
RewriteRule ^credit-(.*)-(.*)-(.*)\.htm$ credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]
RewriteRule ^credit-(.*)-(.*)-(.*)\.html$ credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]
Bonjour,

déjà, tu peux résumer les 2 règles en 1 seule :

Code:
RewriteRule ^credit-(.*)-(.*)-(.*)\. credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]
(en gros, on se fiche de l'extension...)

Ne pourrais-tu pas mettre un exemple concret d'un lien qui ne fonctionne pas (en changeant le NDD pour confidentialité)?
 
WRInaute passionné
D'après ce que je peux constater, c'est un problème de préséance dans les règles. L'une est exécutée avant l'autre et empêche la suivante d'être prise en compte.

Ce que je constate également, c'est l'emploi de l'extension HTM et des règles de réécriture avec des exentions HTML : ça pose un souci si tu mets systématiquement le "$" derrière HTM/HTML. S'embrouiller avec ça, c'est le meilleur moyen d'avoir du duplicate content : choisi ton extension une fois pour toute!

Envoie-moi ton HTACCESS par MP si tu veux. ;-)

Autre chose, pour l'extension, dans la mesure où tu en choisis une, opte plutôt en faveur de HTML (ça pourrait éviter des problèmes avec des concurrents mal intentionnés).
 
WRInaute accro
Oui c'est ça, une règle empêche l'autre de s'exécuter, il me semble avoir essayé de changer leur ordre sans que ca change quoi que ce soit.
Pour les extensions en effet il y a les deux, c'est que j'ai fait un copier coller sans vérifier :(
Je t'envoi le htaccess concernant les réécritures, car il y a une centaine de redirectpermanent (par rapport à l'ancien site).
Pour l'extension, malheureusement c'est trop tard, mais pour les prochains sites je suivrai ton conseil, par rapport aux concurrents, c'est qu'ils peuvent faire du duplicate content c'est ca ? en faisant des backlink vers les pages en mettant html en extension ? N'y a t'il pas un moyen de réécrire les extensions html en htm ?
Merci beaucoup pour ton aide, j'apprécie vraiment ton partage de connaissance dans ce domaine.
 
WRInaute passionné
Réessaye avec :
Code:
RewriteRule ^credit-([0-9]+)-([0-9]+)-([0-9]+)\. credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]

Mais, je suis presque certain que c'est l'autre qui ne va plus fonctionner... :lol:
 
WRInaute accro
Non l'autre règle fonctionne toujours par contre, la nouvelle n'est tjs pas prise en compte : erreur 404 quand on veut calculer.
 
WRInaute accro
La page credit-10000 elle est gérée par le CMS (i.e. index.php?page=credit-10000)?

Dans ce cas, solution simple, tu rajoutes ça avant le reste:
RewriteRule ^(credit-.+)$ index.php?page=$1 [QSA]

Et tu déplaces la RewriteRule pour credit-x-y-z juste après celle-là (donc avant les rewritecond et rewriterule).

Si ce n'est pas ça, c'est qu'il y a une autre règle quelque part...

Jacques.
 
WRInaute accro
Merci pour ta réponse Jacques,
en effet la page credit-100000 est bien gérée par le CMS contrairement à la page credit-calcul.php qui génère le tableau d'amortissement.
Malheureusement quand je met en place tes préconisations, (cad ta nouvelle règle suivie de la règle credit-x-y-z puis la règle du CMS RewriteRule ^(.+)$ index.php?page=$1 [QSA]) plus aucune page ne s'affiche, que du 404 car j'ai l'impression que la règle du cms n'est plus exécutée.
Voici le htaccess
Code:
#php5.2
#OVH /!\
SetEnv REGISTER_GLOBALS 0
SetEnv PHP_VER 5

Options -Indexes
ServerSignature Off
Options +FollowSymLinks

#ErrorDocument 404 http://www.emprunt-et-credit.com/

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

#Utilise seulement le site avec www
RewriteCond %{HTTP_HOST} ^emprunt-et-credit.com$
RewriteRule ^(.*)   http://www.emprunt-et-credit.com/$1  [QSA,L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#RewriteRule ^(credit-.+)$ index.php?page=$1 [QSA]
#RewriteRule /credit-([0-9]+)-([0-9]+)-([0-9]+)\. credit-calcul.php?cap=$1&taux=$2&annee=$3 [R=301,L]

RewriteRule ^(.+)$ index.php?page=$1 [QSA]
RewriteRule ^([0-9]*)-(.*).htm$ index.php?mact=News,cntnt01,detail,0&cntnt01articleid=$1&cntnt01origid=&cntnt01returnid=$2
RewriteRule ^credit-(.*)-(.*)-(.*)\. credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]

#redirection ancien site
RedirectPermanent /calcul-epargne.php http://www.emprunt-et-credit.com/calcul-epargne.htm
....
....
ExpiresDefault "access plus 1 month"
FileETag none

</IfModule>
 
WRInaute accro
Les deux règles credit doivent être avant les RewriteCond (les RewriteCond n'affectent que la RewriteRule qui suit immédiatement).

Evidemment on suppose que tu n'as pas de fichiers/répertoires (réels) qui commencent par credit...

Jacques.
 
WRInaute passionné
Il est possible que ce soit le mot credit dans le lien qui pose un souci (interception par le CMS).

Il faudrait essayer avec (par exemple) :

Code:
RewriteRule ^finecheance-([0-9]+)-([0-9]+)-([0-9]+)\. credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]

Et faire un essai en conséquence.
-http://www.emprunt-et-credit.com/finecheance-100000-3-10.htm


edit (grillé): @jcaron : par MP, j'ai déjà fait essayé la solution des règles avant la règle générale du index.php... pas de résultat valable. C'est vraisemblabmement le mot credit qui pose souci.
 
WRInaute accro
Bingo !
En mettant la règle avant le rewritecond ca fonctionne, mais j'ai dû supprimer la règle que jacques m'a suggéré (RewriteRule ^(credit-.+)$ index.php?page=$1 [QSA])

Merci vraiment à vous deux pour tout le mal que vous vous êtes donner.
J'aurais appris quelques trucs sur les règles de réécritures :)
 
WRInaute accro
bproductiv a dit:
Bingo !
En mettant la règle avant le rewritecond ca fonctionne, mais j'ai dû supprimer la règle que jacques m'a suggéré (RewriteRule ^(credit-.+)$ index.php?page=$1 [QSA])

Merci vraiment à vous deux pour tout le mal que vous vous êtes donner.
J'aurais appris quelques trucs sur les règles de réécritures :)
voic donc ce qui fonctionne :
Code:
RewriteRule ^credit-(.*)-(.*)-(.*)\. credit-calcul.php?cap=$1&taux=$2&annee=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ index.php?page=$1 [QSA]
RewriteRule ^([0-9]*)-(.*).htm$ index.php?mact=News,cntnt01,detail,0&cntnt01articleid=$1&cntnt01origid=&cntnt01returnid=$2
 
Discussions similaires
Haut