Aller au contenu

URL Rewriting - perte des parametres


Sujets conseillés

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

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

Lien vers le commentaire
Partager sur d’autres sites

Si tu veux transmettre les paramètres, il faut utiliser le flag [QSA], pour Query String Append ;)

Donc [QSA,L] au lieu de [L] en fin de règle !

Lien vers le commentaire
Partager sur d’autres sites

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 ?

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

Lien vers le commentaire
Partager sur d’autres sites

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... :(

Lien vers le commentaire
Partager sur d’autres sites

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

<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 codage html pourri de ce site. :whistling:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...