Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

RewriteRule qui ne marche pas (?)

6 réponses
Avatar
pehache
Bonjour,

dans un .htaccess j'ai deux RewriteRule très similaires :

============================
RewriteEngine on
RewriteRule ^art.php3?id_article=([0-9]+) art.php3%3Fid_article=$1.html
RewriteRule ^_archives.php3?date=([0-9]+) _archives.php3%3Fdate=$1.html
============================

La première fait exactement ce qu'elle est censée faire, par contre la
seconde ne fait rien du tout. Si dans le navigateur je tape l'adresse :

/_archives.php3?date=2010

elle reste comme ça au lieu de devenir

/_archives.php3%3Fdate=2010.html

Une explication ?

--
"...sois ouvert aux idées des autres pour peu qu'elles aillent dans le
même sens que les tiennes.", ST sur fr.bio.medecine

6 réponses

Avatar
Nicolas George
pehache , dans le message , a écrit :
dans un .htaccess j'ai deux RewriteRule très similaires :
=========================== > RewriteEngine on
RewriteRule ^art.php3?id_article=([0-9]+) art.php3%3Fid_article=$1.html
RewriteRule ^_archives.php3?date=([0-9]+) _archives.php3%3Fdate=$1.html
=========================== >
La première fait exactement ce qu'elle est censée faire, par contre la
seconde ne fait rien du tout. Si dans le navigateur je tape l'adresse :

C'est surprenant que l'une ou l'autre marche le moins du monde, dans la
mesure où tu as un ? pas protégé. Comment fais-tu tes tests ?
Avatar
pehache
Le 15/03/2018 à 23:18, Nicolas George a écrit :
pehache , dans le message , a écrit :
dans un .htaccess j'ai deux RewriteRule très similaires :
=========================== >> RewriteEngine on
RewriteRule ^art.php3?id_article=([0-9]+) art.php3%3Fid_article=$1.html
RewriteRule ^_archives.php3?date=([0-9]+) _archives.php3%3Fdate=$1.html
=========================== >>
La première fait exactement ce qu'elle est censée faire, par contre la
seconde ne fait rien du tout. Si dans le navigateur je tape l'adresse :

C'est surprenant que l'une ou l'autre marche le moins du monde, dans la
mesure où tu as un ? pas protégé. Comment fais-tu tes tests ?

En live sur le site lui-même (hébergement OVH)
La règle qui marche (oui, c'est "article.php3" et pas "art.php3", j'ai
raccourci pour le post, ça ne change rien au principe) :
http://alternatives-paloises.com/article.php3?id_articlef37
Celle qui ne marche pas (la règle que j'ai postée est exactement celle
du htaccess) :
http://alternatives-paloises.com/_archives.php3?date 04
Ca renvoie bien quelque chose : le contenu d'un fichier
_archives.php3.html qui est présent à la racine. Alors que j'attends ceci :
http://alternatives-paloises.com/_archives.php3%3Fdate 04.html
Sinon :
http://prntscr.com/irtjpc
(c'est un site SPIP qui a été converti en statique avec wget)
--
"...sois ouvert aux idées des autres pour peu qu'elles aillent dans le
même sens que les tiennes.", ST sur fr.bio.medecine
Avatar
Nicolas George
pehache , dans le message , a écrit :
En live sur le site lui-même (hébergement OVH)
La règle qui marche (oui, c'est "article.php3" et pas "art.php3", j'ai
raccourci pour le post, ça ne change rien au principe) :
http://alternatives-paloises.com/article.php3?id_articlef37

... renvoie :
HTTP/1.1 302 Found
Location: http://alternatives-paloises.com/article.php3%3Fid_articlef37.html
Ce n'est pas l'oeuvre de la rewrite engine, la rewrite engine travaille
en interne, les modifications des URL ne sont pas renvoyées au client.
C'est autre chose qui fait la réécriture quelque part.
Avatar
pehache
Le 16/03/2018 à 09:12, Nicolas George a écrit :
pehache , dans le message , a écrit :
En live sur le site lui-même (hébergement OVH)
La règle qui marche (oui, c'est "article.php3" et pas "art.php3", j'ai
raccourci pour le post, ça ne change rien au principe) :
http://alternatives-paloises.com/article.php3?id_articlef37

... renvoie :
HTTP/1.1 302 Found
Location: http://alternatives-paloises.com/article.php3%3Fid_articlef37.html
Ce n'est pas l'oeuvre de la rewrite engine, la rewrite engine travaille
en interne, les modifications des URL ne sont pas renvoyées au client.
C'est autre chose qui fait la réécriture quelque part.

Ah merde, t'as raison ! Cette première règle est en fait depuis
longtemps dans le .htaccess mais effectivement maintenant je me souviens
qu'elle ne marchait pas ! On avait finalement mis en place un script
article.php3 qui faisait la redirection souhaitée.
Du coup je suppose qu'en faisant un script similaire _archive.php3 ça le
ferait aussi.
Néanmoins : que faudrait-il changer dans ces règles pour qu'elles
fonctionnent et que le serveur ne recherche pas le script php ?
--
"...sois ouvert aux idées des autres pour peu qu'elles aillent dans le
même sens que les tiennes.", ST sur fr.bio.medecine
Avatar
pehache
Le 16/03/2018 à 21:35, pehache a écrit :
Du coup je suppose qu'en faisant un script similaire _archive.php3 ça le
ferait aussi.

D'ailleurs ça le fait.
Néanmoins : que faudrait-il changer dans ces règles pour qu'elles
fonctionnent et que le serveur ne recherche pas le script php ?

--
"...sois ouvert aux idées des autres pour peu qu'elles aillent dans le
même sens que les tiennes.", ST sur fr.bio.medecine
Avatar
Nicolas George
pehache , dans le message , a écrit :
Néanmoins : que faudrait-il changer dans ces règles pour qu'elles
fonctionnent et que le serveur ne recherche pas le script php ?

Débugger pas à pas. Je te conseille de t'occuper en premier du point
d'interrogation, qui est actif pour les regexps.