URL rewriting problème

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

lebel
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: 7 Avr 2003

URL rewriting problème

Message le Jeu Nov 20, 2003 21:51

1°) URL rewriting:
J'ai des pages sous la forme:
http://xxxx/logiciel.php?logiciel=nomdu ... umero_page

et je voudrais:
http://xxxx/nomdulogiciel/id_logiciel-numero_page.html

Bref, un classique que j'arrive pas à faire.
J'ai essayé çà mais çà plante et je vois pas pourquoi ...
Code: Tout sélectionner
RewriteRule ^([a-z_0-9]+)\logiciel-([0-9]+)-([0-9]+)\.html$ logiciel.php?logiciel=$1&id=$2&page=$3 [L]


2°) pour le paramètre "nomdulogiciel", je risque d'avoir des caractères spéciaux, du style de ceux qui aiment pas les URL. Comment puis-je les remplacer par des - ?

merci par avance

nikoshr
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 320
Inscription: 10 Juil 2003

Message le Jeu Nov 20, 2003 22:50

1/ A priori
Code: Tout sélectionner
RewriteRule ^(\w+)\/logiciel-(\d+)-(\d+)\.html$ logiciel.php?logiciel=$1&id=$2&page=$3 [L]

il manquait un / devant logiciel, et, pour simplifier un peu, \w représente les caractères alphanumériques, \d les chiffres

2/ Ca dépend de ce que tu veux et peux faire, mais je dirais que le plus simple et le plus prudent est de normaliser tous les noms de logiciel dans le source HTML et de se tenir à des caractères ASCII.

lebel
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: 7 Avr 2003

Message le Jeu Nov 20, 2003 22:54

1°) merci je vais essayer ...

2°) urlencode() çà devrait marcher j'espère ...
mais je suis pas sur !!!

nikoshr
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 320
Inscription: 10 Juil 2003

Message le Jeu Nov 20, 2003 23:00

Si tu veux utiliser urlencode, il faut modifier la règle pour qu'elle prenne en compte les % possibles et les espaces codés en tant que + dans le nom du logiciel, soit
Code: Tout sélectionner
RewriteRule ^([\w\%\+]+)\/logiciel-(\d+)-(\d+)\.html$ logiciel.php?logiciel=$1&id=$2&page=$3 [L]

et éventuellement ajouter les caractères accentués, cédilles, etc. Je ne suis pas sûr que ca plaise vraiment à Apache ce genre de chose.

lebel
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: 7 Avr 2003

Message le Jeu Nov 20, 2003 23:08

Code: Tout sélectionner
RewriteRule ^(\w+)\/logiciel-(\d+)-(\d+)\.html$ logiciel.php?logiciel=$1&id=$2&page=$3 [L]


ta proposition marche pas ...


et comment peut-on "normaliser" une chaine en html ?
:oops:

nikoshr
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 320
Inscription: 10 Juil 2003

Message le Jeu Nov 20, 2003 23:13

D'accord, sur quelle adresse? Et est-ce que les règles se trouvent dans un .htaccess ou dans httpd.conf ?

En HTML, pas possible. Il faut passer par un contrôle externe (PHP, ici, non?)
Ce que j'entends par là, c'est que, plutôt qu'utiliser directement les noms de logiciels, tu utilises un index que tu maîtriseras mieux. Ca peut être une clé primaire de base de données ou une chaîne alphanumérique sans caractères exotiques (e à la place de é par exemple). C'est plus clair ou je n'ai rien compris à la question?

lebel
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: 7 Avr 2003

Message le Jeu Nov 20, 2003 23:49

l'interet de mettre le nom du logiciel en tant que répertoire, c'est pour améliorer le référencement ...
c'est pour çà que je penchais pour un url_encode + ereg_replace des espaces par des - !

t'en pense quoi ?

lebel
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: 7 Avr 2003

Message le Ven Nov 21, 2003 8:38

Code: Tout sélectionner
RewriteRule ^([a-z_0-9]+)/([0-9]+)-([0-9]+)\.html$ logiciel.php?logiciel=$1&id=$2&page=$3 [L]


CA MARCHE ...
sauf que comme je créée un répertoire virtuel supplémentaire grace à l'URL rewriting, les images et liens qui sont en liens relatifs sont tous faussés ...
Y-a-t'il un moyen de corriger çà rapidement dans le htaccess ?

merci par avance

lebel
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: 7 Avr 2003

Message le Ven Nov 21, 2003 8:47


nikoshr
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 320
Inscription: 10 Juil 2003

Message le Ven Nov 21, 2003 9:09

lebel a écrit:l'interet de mettre le nom du logiciel en tant que répertoire, c'est pour améliorer le référencement ...
c'est pour çà que je penchais pour un url_encode + ereg_replace des espaces par des - !

t'en pense quoi ?


Content que ca marche. C'est une bonne idée, mais ca veut quand même dire que tous les noms de logiciels doivent être transformés pour constituer une base homogène. On parle de la même chose, monsieur Jourdain.


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Message le Ven Nov 21, 2003 9:25

lebel a écrit:ereg_replace des espaces par des -


Un str_replace() sera dans ce cas bien suffisant et bien plus rapide qu'une fonction POSIX (fonctions qui déjà sont plus lentes que les fonctions PCRE).

Fred

lebel
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: 7 Avr 2003

Message le Ven Nov 21, 2003 10:17

ok par contre le [a-z_0-9] va pas marcher avec les -

faut mettre quoi à la place ?

nikoshr
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 320
Inscription: 10 Juil 2003

Message le Ven Nov 21, 2003 10:23

[a-z_0-9\-]


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Message le Ven Nov 21, 2003 10:27

Ou [a-z_0-9-] (placé à la fin, le tiret sera pris comme un caractère normal)

Fred


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 :



Qui est en ligne

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