URL rewriting problème

WRInaute discret
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:
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
 
WRInaute occasionnel
1/ A priori
Code:
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.
 
WRInaute discret
1°) merci je vais essayer ...

2°) urlencode() çà devrait marcher j'espère ...
mais je suis pas sur !!!
 
WRInaute occasionnel
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:
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.
 
WRInaute discret
Code:
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:
 
WRInaute occasionnel
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?
 
WRInaute discret
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 ?
 
WRInaute discret
Code:
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
 
WRInaute occasionnel
lebel a dit:
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.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut