Transformer monsite.com/page.php?zob=X en monsite.com/page/X

WRInaute discret
Hello à tous
Je cherche à trouver une règle de réécriture qui pourrait rediriger
.com/lexique/mot vers la page .com/lexique.php?word=mot ...


Des idées ? Là je patauge un peu, et j'ai peur de créer des failles de sécurité.
Pour l'instant j'ai fait ça
Code:
RewriteRule ^lexique.php/([a-z]*)* lexique.php?word=$1
Mais ça foire complet, ça me fait complètement sauter mes styles CSS ...
 
WRInaute occasionnel
Je suis pas sûr, mais peut être que tes fichiers de styles il va les chercher maintenant dans le répertoire .com/lexique/ alors qu'ils sont à la racine. Soit tu vas les chercher à la racine avec ../ soit tu fais une redirection pour tes feuilles de styles.
 
WRInaute discret
C'est bon, nickel, j'ai mes CSS qui sont de retour... Merci beaucoup :)

Maintenant, seul (GROS) problème, la variable transmise... comment la récupérer ? En effet, $_GET['word']) ne me ramène plus rien ... forcémment.
Donc du coup, je me retrouve avec une page "vide", comment faire pour récupérer cette fameuse variable word, dont la valeur est maintenant
lexique/mot

Des idées ?
 
WRInaute occasionnel
Il faudrait enlever le .php dans ta règle, ça marchera peut être
Code:
RewriteRule ^lexique/([a-z]*)* lexique.php?word=$1
 
WRInaute discret
Yes, j'avais déjà pris l'initiative de corriger ce petit détail, merci :wink:
Ceci dit, je n'arrive tjs pas à récupérer la variable... Personne pour m'éclairer ?
 
WRInaute occasionnel
Essaie d'enlever le * ? (en plus il faut que ta variable soit uniquement composé de lettres minuscules avec cette règle)
Code:
RewriteRule ^lexique/([a-z]*) lexique.php?word=$1
 
WRInaute discret
Ok j'ai essayé, mais ma variable n'est toujours pas reconnue par le script de ma page :/
En revanche, j'ai un doute sur ma règle : que devraisje faire pour pouvoir permettre AUSSI les chiffres dans cette fichue variable ?
 
WRInaute impliqué
c'est étonnant car chez moi cela fonctionne sans problème.
fait un peu
if (isset($HTTP_GET_VARS['word']){
echo "undeuxtrois";
}
 
WRInaute discret
Code:
if (isset($HTTP_GET_VARS['word'])){echo "undeuxtrois";}
else {echo "ben non";}
m'affiche "ben non" :(
Je précise que la version php est la 4.3.10 ...
phpinfo

Je rappelle ma règle de réécriture :
Code:
RewriteEngine On
RewriteRule ^lexique/([a-z]*) lexique.php?word=$1
 
WRInaute impliqué
je ne sais plus quoi te dire à part de peut etre changer ton .htaccess
RewriteRule ^lexique/([a-zA-Z]*)$ /lexique.php?word=$1

ce qui est bizare c'est que -http://www.frenchtouchseduction.com/lexique/lexique/lexique/lexique/lexique.php?word=beginner
cela fonctionne sans problème
 
WRInaute discret
Effectivement c'est pour le moins étrange :/
en revanche, si j'essaie
.com/lexique/beginner, je retombe sur la liste des entrées du lexique, signe que la variable word, normalement =beginner, est vide ...
(même avec la règle que tu me proposes, que j'ai utilisée pour mon .htaccess) ... J'y comprends rien :/
 
WRInaute discret
J'ai trouvé :)
Code:
RewriteRule ([[:alpha:]]+)/$ /lexique.php?word=$1
Fonctionne au poil...

Excepté qu'il faudrait que ça prenne aussi les mots avec un espace, ou un tiret, voir un chiffre dedans ...
Pour l'instant, alpha passe bien...
Mais je voudrais qu'il prenne aussi en compte des mots tels que
"body language", "one-itis", "HB5" ou "rAFC*"
Qqun peut me suggérer une règle qui convienne ? J'ai cherché je comprends rien :/
 
Discussions similaires
Haut