Aller au contenu

Réécriture d'URL


Sujets conseillés

Bonjour,

J'utilise la réécriture d'URL en général, et cela ne me pose pas de problèmes,

j'ai toute une série de choses dans le genre :

Pour l'URL : http://www.monsite.com/rep/i_love_you,fr_FR,444.html

RewriteRule ^(.*),(([a-zA-Z]{2})_([a-zA-Z]{2})),([0-9]+).html$ /rep/index.php?key1=$1&key2=$2&key3=$5 [NC,L]

mais pourtant je ne parviens pas à réécrire une URL de ce type :

http://www.monsite.com/rep/i_love_you

En gros, j'essaye ca :

RewriteRule ^(.*)$ /s/index.php?key1=$1 [NC,L]

et je me récupère des erreurs et des Internal Server Configuration....

Quelqu'un pourrait-il me donner un bon conseil ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

Je pense que tu ne pourras pas, en tout cas pas aisément.

La première réécriture contient vraisemblablement un numéro (d'article, page, rubrique ou équivalent) qui est utilisé par le script pour extraire l'info de la base de données.

La deuxième n'a que le titre, et il te faudra donc modifier ton script pour pouvoir récupérer les données sur cette base.

Lien vers le commentaire
Partager sur d’autres sites

Effectivement... l'expression ^(.*)$ seule semble poser problème... Et je ne trouve pas de référence à ce problème dans la documentation :S

En fait il y a une certaine logique derrière cela à mon avis... imaginons que tu Réécrives en utilisant cette expression qui signifie n'importe quel caractère (ou même aucun)... Lorsque la requête vers le document réécrit est effectuée la règle est à nouveau vérifiée, vu que (à moins que la ressource se trouve à une autre adresse) elle est forcément composée de n'importe quel caractère... (Tu vois ou je veux en venir ?).

En utilisant une classe de caractère moins "large" cela ne semble pas poser de problème...

RewriteRule ^([a-z0-9_-]+)[/]?$ /s/index.php?key1=$1 [NC,L]

Tu peux aussi régler ton problème en plaçant la règle un niveau au dessus du répertoire qui est utilisé dans l'URL (dans ton cas cela correspond à la racine de ton site et ensuite d'ajouter le chemin dans l'expression régulière :

RewriteRule ^rep/(.+)[/]?$ /s/index.php?key1=$1 [NC,L]

Sinon je ne vois pas... ensuite, comme l'a dit Dan en d'autres termes...le paramètre que tu récupère devra être unique et te mener aux données que tu souhaites afficher... (avec les autres URL tu as l'ID (surement unique et clé primaire de ta table) pour récupérer ton élément, là tu n'as que du texte, donc tu dois t'assurer qu'il est aussi unique).

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...