Page 1 sur 1

Pb: Reécriture d'url et .htaccess

Posté : 28 janv. 2009, 17:50
par Anémone
Bonjour,

Après recherches et tatonnements, j'ai adopté ce code

Code : Tout sélectionner

Options +Follow Symlinks RewriteEngine on RewriteBase /monrep/ RewriteRule ^([[:alpha:]]).html$ index.php?champ=$1&envoi=OK
dans l'espoir de transformer une url du type

Code : Tout sélectionner

/index.php?champ=$var&envoi=OK
en ceci

Code : Tout sélectionner

/$var.htm
en lieu de quoi le serveur me retourne:
"Internal Server Error..."
Et je ne trouve rien dans les fichiers log qui puisse m'éclairer.
Merci pour vos lumières,
cordialement

Thierry

Posté : 28 janv. 2009, 19:45
par thehawk
Bonjour

Essaye de faire sans de "$" pour $var.htm.

Bonne soirée Hawk

Posté : 28 janv. 2009, 19:52
par Ryle
L'erreur 500 vient d'un problème au niveau d'apache. Il rencontre donc un problème à la lecture de ton .htaccess, c'est donc plus un problème de syntaxe qu'il faut chercher...

En l'occurence, je ne suis pas certains qu'apache connaisse la classe [[:alpha:]] ... à vérifier, mais tu doit normalement pouvoir utiliser [a-zA-Z] sans problème :) (y a pas d'accent dans les urls)

A noter également que ".html" dans la regexp ne correspond pas à l'extension ".html" mais à "n'importe quel caractère suivi des lettres html". Pour signifier qu'il s'agit bien du caractère point, il faut l'échaper à l'aide d'un antislash : "\.html" ;)

Ps : quant à ta transformation, si ta règle gère les .html et que tu saisis un .htm, elle ne sera pas appliquée :)

Posté : 28 janv. 2009, 20:15
par Anémone
Bonjour,

Merci pour ces réponses; de mon coté, j'ai un peu avancé, je ne plante plus Apache, mais toujours pas de redirection. Voici le nouveau code:

Code : Tout sélectionner

RewriteRule ^([a-z])\.html$ /index.php?champ=$1&envoi=OK [L]
J'ai fait pour tester:

Code : Tout sélectionner

RewriteRule ^index\.html$ /index.php [L]
et ça marche.
D'où ma perplexité...
Merci,

Thierry

Posté : 29 janv. 2009, 17:01
par blof
Salut,

Code : Tout sélectionner

RewriteRule ^([a-z])\.html$ /index.php?champ=$1&envoi=OK [L]
[a-z] représente un caractère compris entre a et z.
tu ne vas donc réécrire que les URL : a.html, b.html, ... ,z.html

pour accepter plusieurs caractères il faut l'indiquer : [a-z]+
( "+" est un quantificateur qui signifie "un ou plusieurs" )

Fais une recherche avec "URL rewriting" et "expressions régulières POSIX".

Posté : 01 févr. 2009, 16:01
par Anémone
Oui, blof, merci pour ta réponse.
Cependant mon problème reste entier, et une recherche avec URL rewriting ne me donne pas la réponse recherchée.
Mais ma question maintenant déborde de l'intitulé de ce thread, je la formule donc dans un nouveau message.
Merci,
Thierry