Problème d'url rewriting chez OVH

Nouveau WRInaute
Bonjour,
Après de nombreuses recherches je n'arrive toujours pas à faire fonctionner la réécriture d'url (je précise que c'est bien activé sur mon domaine et qu'il fonctionne pour une redirection vers ma page d'accueil par exemple)
J'ai inscrit ceci dans le .htaccess :

Code:
Options +FollowSymlinks
RewriteEngine on 
RewriteRule ^([a-zA-Z0-9\-]+)-([a-zA-Z0-9\-]+)-([a-zA-Z0-9\-]+).php$ /album.php?id=$1&groupe=$2&album=$3 [L]

Il n'y a pas d'erreur affichée mais la barre d'adresse reste du type album.php?id=1
comment changer cela?
 
WRInaute passionné
j'ai l'impression que tu confonds réécriture et redirection+réécriture. C'est normal qu'en appelant /album.php?xxx l'adresse affichée ne change pas si nul part tu dis qu'il faut qu'elle change avec une redirection.

En plus tu autorises le tiret dans tes 3 parties variables ce qui va rendre impossible la distinction des tirets utilsiés comme séparateurs comme dans : ma-super-chaine-impossible-a-decouper-car-trop-de-tirets.php
 
Nouveau WRInaute
forty a dit:
j'ai l'impression que tu confonds réécriture et redirection+réécriture. C'est normal qu'en appelant /album.php?xxx l'adresse affichée ne change pas si nul part tu dis qu'il faut qu'elle change avec une redirection.

En plus tu autorises le tiret dans tes 3 parties variables ce qui va rendre impossible la distinction des tirets utilsiés comme séparateurs comme dans : ma-super-chaine-impossible-a-decouper-car-trop-de-tirets.php
Bonjour forty,
je commence effectivement à m'embrouiller les pinceaux, peux-tu me dire vers quoi m'orienter si je veux obetnir une page du style groupe-album.htm ?
merci
 
WRInaute passionné
ca dépend de ce que peut contenir chaque paramètre. Si c'est lettres + chiffres tu peux mettre (id c'est peut-être que chiffres même) :
Code:
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+).php$ /album.php?id=$1&groupe=$2&album=$3 [L]

Si tu veux supprimer id et que album.php en a besoin pour afficher la page ca risque d'être compliqué. Ça veut peut-être dire qu'il faut le déterminer à partir des deux autres paramètres.

La réécriture implique qu'il faut changer toutes tes urls sur le site et remplacer celles avec /album.php?xxx par le nouveau format. Ensuite si les anciennes urls sont indexées il faut ajouter une redirection permanente pour informer les moteurs de recherches pointilleux sur le duplicate content du changement d'adresse. Ca peut se faire en php avec la fonction header() ou avec htaccess (dans ce dernier cas ca risque de boucler avec la réécriture).
 
Nouveau WRInaute
j'ai modifié le .htaccess :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^album-([0-9]+)-([a-zA-Z0-9\-]+)-([a-zA-Z0-9\-]+)\.html$  album.php?id=$1&groupe=$2&album=$3 [L]
et réécrit ma page qui appelle le lien avec :
Code:
<a href="album-<?php echo ''.$donnees['id'].'';?>-<?php echo ''.$donnees['groupe'].'';?>-<?php echo ''.$donnees['album'].'';?>.html">
mais çà ne fonctionne pas

par contre ca fonctionne lorsque j'ai .htaccess :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^album-([0-9]+)\.html$  album.php?id=$1  [L]
et le lien :
Code:
<a href="album-<?php echo ''.$donnees['id'].'';?>.html">

avez-vous une idée ou est l'erreur?
 
WRInaute passionné
c'est pas possible de mettre "([a-zA-Z0-9\-]+)-" car apache ne sais pas différencier le tiret séparateur du tiret qui peut se trouver dans le paramètre à capturer.

Tu peux mettre :
Code:
RewriteRule ^album-([0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9\-]+)\.html$  album.php?id=$1&groupe=$2&album=$3 [L]

Si tu peux avoir un tiret dans le paramètre groupe il faut soit choisir un autre séparateur soit remplacer ceux qui se trouvent dans groupe par un underscore ou une virgule par exemple.
 
Nouveau WRInaute
çà ne fonctionne toujours pas (j'ai essayé avec des virgules également), je me demande si c'est pas lié à mes paramètres : id comprend uniquement des nombres mais groupe est en majuscule avec des espaces et albums en minuscules avec accents et espaces.
 
Nouveau WRInaute
je viens de voir que çà fonctionne lorsque "groupe" contient un seul mot :
Code:
RewriteRule ^album-([0-9]+),([a-zA-Z0-9]+)\.html$  album.php?id=$1&groupe=$2 [L]
par contre avec plusieurs mots cela rajoute des % dans l'url et çà bloque.
comment permettre les espaces?
 
Nouveau WRInaute
çà y est j'ai réussi à faire fonctionner le lien avec
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^album-([0-9]+),([0-9a-zA-Z-[:space:]]+)-([0-9a-zA-Z-[:space:]]+)\.html$  album.php?id=$1&groupe=$2&album=$3 [L]

par contre j'obtiens des %20 un peu partout dans l'url, n'y a-t-il pas un moyen de remplacer ces %20 par des tirets?
 
WRInaute passionné
as-tu vraiment besoin de passer les paramètres groupe et album à album.php ?

Sinon tu peux mettre une règle de ce type et mettre des tirets ou tu veux :
Code:
RewriteRule ^album-([0-9]+)-.*\.html$  album.php?id=$1 [L]
 
Discussions similaires
Haut