URL rewriting avec texte

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics


LE Guitou
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 12
Inscription: 2 Sep 2009

URL rewriting avec texte

Message le Ven Mar 05, 2010 17:47

Bonjour,

J’ai eu beau suivre les différentes explications, posts… mais je n’arrive pas à m’en sortir.

Je voudrais donc rajouter du texte dans mes url. Celui-ci reprendra le titre des news avec donc : du texte majuscule, minuscule et chiffre.
L’url rewriting avec juste l’ID marche correctement, mais dès que je veux mettre mon texte je n’y arrive pas.

Exemple qui fonctionne juste avec l’id :
- Lien page php : <a href="news-'.$data["id"].'.html">
- htaccess : RewriteRule ^news-([0-9]+)\.html$ /index.php?page=contenu_news&id_news=$1 [L]

Exemple que je voudrais mettre en place :
- Lien page php : <a href="news-'.$data["id"].'-'.$data["titre_formate"].'.html">
- htaccess : RewriteRule ^news-([0-9]+)-([a-zA-Z0-9\-]*)\.html$ /index.php?page=contenu_news&id_news=$1&titre=$2 [L]


L’erreur retournée : HTTP 404. Impossible de trouver le fichier.

Quelqu’un pourrait m’aider svp ?

Merci par avance.


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: URL rewriting avec texte

Message le Ven Mar 05, 2010 17:54

j'vais peut-être dire un c*nnerie mais essaye en mettant le tiret en premier : [-a-zA-Z0-9]


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: URL rewriting avec texte

Message le Ven Mar 05, 2010 17:55

Essaie :
Code: Tout sélectionner
RewriteRule ^news-([0-9]+)-(.*).html$ /index.php?page=contenu_news&id_news=$1&titre=$2 [L]


LE Guitou
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 12
Inscription: 2 Sep 2009

Re: URL rewriting avec texte

Message le Ven Mar 05, 2010 18:01

seebz a écrit:j'vais peut-être dire un c*nnerie mais essaye en mettant le tiret en premier : [-a-zA-Z0-9]


J'avais déjà testé, j'ai retesté mais ça ne veut toujours pas. ^^'

milkiway a écrit:Essaie :
Code: Tout sélectionner
RewriteRule ^news-([0-9]+)-(.*).html$ /index.php?page=contenu_news&id_news=$1&titre=$2 [L]


Ce genre de chose ne laisse pas la porte ouverte a du hack de site ? (possibilité de mettre http://...)


Edit : En effet le (.*) fonctionne très bien mais niveau sécurité cela n'est pas une faille ?

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: URL rewriting avec texte

Message le Ven Mar 05, 2010 19:01

Si tu valides et/ou escapes correctement les paramètres qui te sont passés (ce que tu devrais faire de toutes façons), ça ne devrait pas poser de problème.

Si [-a-zA-Z0-9]* ne convient pas, c'est que tu dois avoir d'autres caractères dans ton titre, non?

Jacques.


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: URL rewriting avec texte

Message le Sam Mar 06, 2010 8:29

jcaron a écrit:Si tu valides et/ou escapes correctement les paramètres qui te sont passés (ce que tu devrais faire de toutes façons), ça ne devrait pas poser de problème.

Jacques.
Peux-tu en dire plus à ce sujet stp?

Merci

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: URL rewriting avec texte

Message le Sam Mar 06, 2010 12:06

Ben si tu utilises des données que tu reçois tu client (via $_GET, $_POST, $_COOKIE et une bonne partie de $_SERVER, etc.), tu ne dois jamais leur faire confiance (même si tu as de la validation JS côté client, même si tu penses que ce sont des données issues d'un formulaire donc tu as fourni toutes les valeurs...).

Ce type de données ne doit donc jamais être utilisé sans validation ou escaping:
- dans une requête SQL
- dans la composition d'un nom de fichier
- dans un appel "system" ou équivalent
- dans un eval
- dans un preg_replace (ou équivalent) avec un flag e
etc.

Sinon tu ouvres la porte à une "injection".

De la même façon, tu ne dois jamais réafficher ces données telles quelles (directement ou après stockage en base SQL), sinon tu ouvres la porte à du cross-site scripting.

Exemple d'injection SQL:
- tu fais une requête "SELECT * from table WHERE id=".$_GET['id']." AND password='".$_GET['password']."'"
- si l'utilisateur passe comme valeur de id "22 OR true OR true" la requête est vraie dans tous les cas, et l'utilisateur peut rentrer même sans connaître de password.
- il faut donc soit valider ce que tu as reçu (vérifier que id n'est bien qu'un nombre et rien d'autre dans le cas présent, et que password ne contient que les caractères autorisés), soit "escaper" les données reçues (avec mysql_real_escape_string)

Note qu'il y a nettement pire comme injection SQL: on peut sans problème effacer toute ta base par exemple.

Jacques.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl

  • Calcul du nombre de backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Transformer des citations en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités