Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1993 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  RewriteRule et caractères spéciaux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

RewriteRule et caractères spéciaux

n°1699281
globule-ch​at
Posté le 08-03-2008 à 16:05:10  profilanswer
 

Bonjour,
 
Je mets en place l'url rewriting sur mon site, je ne rencontre pas de problèmes particuliers, sauf pour les caractères spéciaux, du genre : ? # /, etc.
 
Je m'explique, j'avais des pages du style

Code :
  1. www.monsite.fr?type_recherche=orig [...] tfield=NOM


que je réécris

Code :
  1. www.monsite.fr/origine/NOM.html


 
ma règle est donc :

Code :
  1. RewriteRule /origine/(.*)\.html$ www.monsite.fr?type_recherche=orig [...] tfield=NOM [L]


 
Une erreur 404 apparaît si NOM contient un caractère spécial.  
Les variables NOM sont stockées en BD et sont des chaînes avec toute sorte de caractères.
Comment dois-je réécrire ma règle pour réussir à faire accepter les dièses et point d'interrogation?
Quelqu'un a une idée? j'ai essayer d'échapper les caratères, mais ça ne marche pas.
je ne connais pas grande chose sur les expressions régulières et c'est difficile d'avoir des réponses pertinentes quand je recherche :
RewriteRule "caractères spéciaux" # ?  
sur les moteurs.
 
Merci
alain

mood
Publicité
Posté le 08-03-2008 à 16:05:10  profilanswer
 

n°1700560
globule-ch​at
Posté le 11-03-2008 à 15:55:31  profilanswer
 

en fait ma question est par quoi remplacer le
 
/(.*)/ du RewriteRule
 
pour prendre en compte les ? et # et autres...
 
du genre
 
RewriteRule /([a-zA-Z0-9\?\" )+/...

n°1700835
soju
One shot !
Posté le 12-03-2008 à 09:09:19  profilanswer
 

comportement normal à priori, par exemple pour

www.monsite.fr/origine/bla?blabla.html

Apache va utiliser

www.monsite.fr/origine/bla

Le reste de l'URL étant considéré comme paramètre (query string)
 
plusieurs solutions :
- soit tu nettoies ton champ tfield
- soit tu "urlencode" ton champ lorsque tu crées tes liens

n°1700850
globule-ch​at
Posté le 12-03-2008 à 09:33:07  profilanswer
 

Oui j'utilisais le urlencode() quand mes liens étaient en clair, mais là je n'ai plus le contrôle, tout se déroule dans le .htaccess
 
ou je peux faire avaler du urlencode() au .htaccess?
comment?
 
merci

n°1700854
soju
One shot !
Posté le 12-03-2008 à 09:40:59  profilanswer
 

globule-chat a écrit :

mais là je n'ai plus le contrôle, tout se déroule dans le .htaccess

non, c'est toi qui crée les liens pas le htaccess

n°1700863
globule-ch​at
Posté le 12-03-2008 à 09:55:55  profilanswer
 

à quel moment je dois intervenir alors?
quand je passe une variable avec la valeur UGLY?, directement sur mon navigateur sur mon lien htpp, j'ai une erreur 404 et impossible de récupérer cette variable dans mes fichiers php
si je passe la variable encodée à la main UGLY%3F, là tout se déroule normalement.
 
Sauf que je vois pas à quel moment je peux encoder en interne le ? en %3F. à l'origine les variables sont stockées dans une base de données, où sont saisies dans un champ de recherche par les visiteurs du site, y'a peu de chances qu'ils saississent le ? en hexa...
 
merci

n°1700867
soju
One shot !
Posté le 12-03-2008 à 10:06:49  profilanswer
 

j'imagine que tes liens ne se crées pas tout seul sur ton site, tu fais un truc genre

Code :
  1. echo '<a href="',$truc,'" >lien</a>';

donc c'est à ce moment là que tu interviens


Message édité par soju le 12-03-2008 à 10:07:57
n°1700886
globule-ch​at
Posté le 12-03-2008 à 10:43:17  profilanswer
 

Oui ok, ça veut dire pas mal de code à reprendre...
Je voulais savoir s'il y'avait pas une solution plus light, juste une petite option à ajouter dans le .htaccess avant de me lancer dans la modif des .php
 
merci beaucoup pour l'aide en tout cas

n°1700908
soju
One shot !
Posté le 12-03-2008 à 10:58:51  profilanswer
 

tu peux modifier ton script pour qu'il gère lui même la réécriture,
genre dans ton htaccess tu mets

RewriteRule . index.php

et dans index.php tu parse l'url pour faire ce qu'il faut
 
mais bon, pas très propre vu que tes urls ne respectent pas les standards


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  RewriteRule et caractères spéciaux

 

Sujets relatifs
[PHP-PostgreSQL] Problème d'échappement de caractères[PHP:TCPDF] Utilisations de caractères grecques
Découpe d'une chaîne de caractèrestraitement de chaines de caractères (débutant)
regex : supprimer les caractères répetésGarder les 2 premiers caractères d'un champ
Mysql + phpMyAdmin + caractères chinois[JS] Matcher des caractères Unicode via une regexp
Interprétation des caractères spéciaux 
Plus de sujets relatifs à : RewriteRule et caractères spéciaux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR