Version complète: sur le forum Webmaster Hub : URL Rewriting - perte des parametres
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
jiggle
bonjour,

je veux essayer de simplifier un lien sur une page d'accueil et ma regle de rewriting ne fonctionne pas car le parametre passé à la page HTML n'est pas reconduit par apache. dans la log, il indique split uri et exit le parametre, alors que le ARGS devrait etre transmis. Pouvez-vous m'aider ?

d'avance merci

le fichier htaccess
CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^Livre-([0-9]+)-.*\.html$  /CAT/CAT99_FRACAT2_F.html?DX/edlattes/servlet/_FindArticleServlet?TXT_CODE=$1&TXT_LANGUE=francais  [L]



voici la log apache

strip per-dir prefix: /home/applications/lattes/websrv/ACC/Livre-4536538-Le-Visage-de-l-Ange-Dean-koontz.html -> Livre-4536538-Le-Visage-de-l-Ange-Dean-koontz.html

applying pattern '^Livre-([0-9]+)-.*\.html$' to uri 'Livre-4536538-Le-Visage-de-l-Ange-Dean-koontz.html'

rewrite Livre-4536538-Le-Visage-de-l-Ange-Dean-koontz.html -> /CAT/CAT99_FRACAT2_F.html?DX/edlattes/servlet/_FindArticleServlet?TXT_CODE=4536538&TXT_LANGUE=francais

jusque là tout est ok, l'url rewritée est correcte c'est ensuite que çà se corse :


split uri=/CAT/CAT99_FRACAT2_F.html?DX/edlattes/servlet/_FindArticleServlet?TXT_CODE=4536538&TXT_LANGUE=francais -> uri=/CAT/CAT99_FRACAT2_F.html, args=DX/edlattes/servlet/_FindArticleServlet?TXT_CODE=4536538&TXT_LANGUE=francais
reduce /CAT/CAT99_FRACAT2_F.html -> /CAT/CAT99_FRACAT2_F.html
Dan
Si tu veux transmettre les paramètres, il faut utiliser le flag [QSA], pour Query String Append wink.gif

Donc [QSA,L] au lieu de [L] en fin de règle !
jiggle
QSA sert à passer les parametres d'une URL rewrittée sans ses parametres. je ne suis pas dans ce cas là.

dans mon url fixe, j'ai un nombre de plusieurs chiffres qui correspond au parametre. je le traduis bien dans la regle par un parametre. je pense que le souci vient du fait que j'essaie d'appeler une page HTML avec un parametre et que dans ce parametre j'ai un parametre pour la servlet,. conséquence j'ai deux fois le symbole point d'interrogation dans mon URL. alors c'est peut etre à cause de cela que cela ne fonctionne pas ou bien c'est parce que je passe un parametre à une page HTML et non pas à une page PHP ou JSP ou autre ?

CITATION
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^Livre-([0-9]+)-.*\.html$ /CAT/CAT99_FRACAT2_F.html?DX/edlattes/servlet/_FindArticleServlet?TXT_CODE=$1&TXT_LANGUE=francais [L]


en tous cas, merci de t'interesser à mon pb
Dan
Pourquoi passes-tu DX/edlattes/servlet/_FindArticleServlet dans l'URL ?
Ton programme (script) /CAT/CAT99_FRACAT2_F.html ne pourrait pas appeller lui-même cet exécutable ?

PS: Au temps pour moi, je reconnais que je n'avais pas lu entièrement ta question... sad.gif
jiggle
Cette formulation vient d'un site déjà assez ancien(an 2000). C'est un site qui comporte des frames malheureusement et la page CAT99_FRACAT2_F.html ne contient en fait qu'un javascript qui réécrit le frameset. la société qui avait monté les pages nous avait fourni cette syntaxe pour pouvoir placer des liens fixes sur la page d'accueil faisant appel à une servlet et en permettant à la page d'être entouré du menu. voici le contenu de la page CAT99_FRACAT2_F.html
CITATION
<script>
<!--
url=top.window.location.href
taille=url.length
position=url.indexOf("?DX");
position=position+3
fichier=url.substring(position,taille)
toto=new Array()
toto [0]='<html>\n'
toto [1]='<head>\n'
toto [2]='<title>Site Lattès - Catalogue livres et auteurs editions jc lattes</title>\n'
toto [3]='<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n'
toto [4]='</head>\n'
toto [5]='<frameset cols="124,*" border="0" framespacing="0" frameborder="NO">\n'
toto [6]='<frame src="/CLI01_MENU_F.html" name="menu" scrolling="NO" noresize frameborder="NO" marginheight="0" marginwidth="0">\n'
toto [7]='<frameset rows="65,*" border="0" framespacing="0" frameborder="NO">\n'
toto [8]='<frame src="/CAT/CAT01_HAUT_F.html" name="haut" scrolling="NO" noresize frameborder="NO" marginheight="0" marginwidth="0">\n'
toto [9]='<frame src="'+fichier+'" name="centre" noresize frameborder="NO" marginheight="0" marginwidth="0">\n'
toto [10]='</frameset>\n'
toto [11]='</frameset>\n'
toto [12]='<noframes><body bgcolor="#FFFFFF">\n'
toto [13]='désolé, votre navigateur ne supporte pas les frames\n'
toto [14]='</body></noframes>\n'
toto [15]='</html>\n'
document.clear()
for (i=0;i<16;i++)
{
document.write(toto)
}
document.close()
//-->
</script>


cette formulation peut surement à présent être changée mais je ne suis pas du tout un expert en HTML. le site en question est le sitesite éditions jean claude lattes et ce genre de lien est placé sur la page d'accueil sur les images représentant les livres. Toutes mes excuses pour le [i]codage html pourri
de ce site. whistling.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.