[urgent] Problème d'URL rewriting: espaces dans .htaccess

M
mathias
Guest
Bonjour à tous,

Voici mon problème :
Je dois transformer des urls de la forme
cat.php?id=$1 en id-$1.html

Voici le .htaccess que j'ai généré :
RewriteEngine on
RewriteRule ^id-([0-9a-zA-Z]+)\.html$ cat.php?id=$1 [L]

Celui-ci fonctionne parfaitement, pour la plupart des URLs.
Cependant certaines pages contiennent des espaces dans leur variable, soit sous la forme :
cat.php?id=forum%20webrankinfo
soit sous la forme
cat.php?id=forum webrankinfo
Mais internet explorer remplace de toute façons automatiquement l'espace par %20.

Ma question est donc la suivante : comment puis-je intégrer le caractère % dans ma règle ?

J'ai essayé ([0-9a-zA-Z%]+) et ([0-9a-zA-Z\%]+), mais aucune des deux règles ne fonctionne.

Merci d'avance pour vos réponses

Mathias
 
WRInaute discret
Ton problème est de faire référencer tes adresses avec id= ou c'est juste histoire de faire de L'UR pour avoir c'est page sur la forme .html

Car la variable " id= " n'est pas référencé par Google, donc je te conseille de la transformer en cat= et là tu devrais voir tes pages indexées.

En effet si tu regarde tes pages indexées, celle écritent avec "thread= " sont présentent... donc change juste "id= "
 
M
mathias
Guest
BZHcool: merci de ta réponse, mais le problème ne concerne pas le site hi-jump.org, ni même la nécessité de l'URKL rewriting.

J'ai juste besoin de connaître une règle des expressions régulières reconaissant les pages contenant le signe %

par exemple,

variable-forum%20webrankinfo.html
ne sera pas reconnue par la rège

RewriteRule ^variable-([0-9a-zA-Z]+)\.html$ index.php?variable=$1 [L]

à cause du %20 représentant un espace dans une url
 
WRInaute discret
Salut,

J'avais un problème pour intéger le caractère _
Essaye cela, si cela ne marche pas avec les espaces ou les signes %20 essaye de remplacer dans le nom de tes pages les espaces par _

Code:
RewriteRule ^page_(\w+)\.html$ page.php?var=$1 [L]

@+
Grand-Pas
 
M
mathias
Guest
Merci, Grand-Pas, c'est bien tenté, .... mais ça marche pas.

je peux pas remplacer les noms de mes pages, car ce ne sont pas mes sites, je suis juste chargé de mettre en place une solution d'URL rewriting dessus.
 
Nouveau WRInaute
Code:
RewriteRule  ^variable-(.+)\.html$ index.php?variable=$1 [L]

Ps Une question :

Voici mon problème :
Je dois transformer des urls de la forme
cat.php?id=$1 en id-$1.html

Tu veux rediriger tes fichiers xxxxx.php vers xxxxxx.html ? ou l'inverse ? parce que ma commande si dessus est pour rediriger variable-xxxxxxx.html ----> index.php?variable=xxxxxxxxx

De test cette commande fonctionne parfaitement avec les espaces.
 
M
mathias
Guest
Ok, merci à toi Frenetic, mon problème est résolu.

C'est vrai que c'est un peu bourrin le coup du (.+), mais du moment que ça marche !

Pour répondre à ta question, ce que tu propose c'est exactement ce que j'ai fait.
 
Nouveau WRInaute
Bonjour a tous :D

voila j'ai essaye dans tout les sens impossible de passer une variable avec espace dans mon url

Code:
RewriteEngine on
RewriteRule ^annales-(.+)\.html /index.php?mod=archives&ac=dossier2&nom_dos=$1

je ne sais plus comment faire ??

Merci d avnce a tous

PS: je suis nouveau mais je suis le forum depuis quelque temps et je dois vous dire que je le trouve vraiment excelent

A+
 
Nouveau WRInaute
Bon ca marche tres bien en local mais pas sur mon site ???

Code:
RewriteEngine on
RewriteRule ^annales-(.*)\.html index.php?mod=archives&ac=dossier2&nom_dos=$1

A+
 
Discussions similaires
Haut