Problème de casse avec l'url rewrinting

Nouveau WRInaute
Bonjour,

Je suis entrain de mettre au point mon système d'url rewriting pour mon site sous easyphp 1.8. Et cela fonctionne bien mais j'observe un problème de casse que j evais tenter de vous expliquer.

Pour faire mes liens j'utilise le code php suivant :

Code:
<?php
if(isset($_GET["rubrique"])) $rubrique = $_GET["rubrique"];
else $rubrique = "";

switch ($rubrique)
{
default: include('accueil.php'); break;
case 'Accueil': include('accueil.php'); break;
case 'Annuaire': include('annuaire.php'); break;
case 'Liens': include('Liens/liens.php'); break;
case 'Partenaire': include('partenaire.php'); break;
}
?>

Je veux les transformer en bidule.html au lieu de index.php?rubrique=bidule et donc j'ai utilisé l'url rewriting.
J'ai donc mis dans mon fichier .htaccess les lignes suivantes :

Code:
Options +FollowSymlinks 
RewriteEngine on
RewriteRule ^([a-zA-Z]*)\.html$ index.php?rubrique=$1 [L]

Mais à ce stade j'ai rencontré des problèmes quand je cliquais sur le lien "Liens.html" (par exemple) ca m'envoyait une page 404. J'ai donc regardé les erreurs dans le log rewrite d'apache et j'ai observé qu'il ne prenait pas la valeur Liens mais liens. J'ai donc modifié la casse dans le code :

Code:
<?php
if(isset($_GET["rubrique"])) $rubrique = $_GET["rubrique"];
else $rubrique = "";

switch ($rubrique)
{
default: include('accueil.php'); break;
case 'accueil': include('accueil.php'); break;
case 'annuaire': include('annuaire.php'); break;
case 'liens': include('Liens/liens.php'); break;
case 'partenaire': include('partenaire.php'); break;
}
?>

Et quand j'ai fais cette modification ca marche quand je clique sur Liens.html. VOus allez me dire ben si ca marche pourquoi ne renommes tu pas tout tes "case" avec des miniscules?
Eh ben je vous répondrais que je ne peux pas faire cela car j'utilise un éditeur d'article en ligne et que je crée mes liens a partir des noms de mes articles or tous mes articles commences par des majuscules (articles sur le seigneur des anneaux donc je me vois mal mettre gandalf au lieu de Gandalf).

Je ne comprends pas pourquoi mon système ne concidère pas la casse ! :?

Est ce que vous avez une solution et à défaut il faudra que je revois mon code php pour l'édition de mes articles mais ca m'enchante guère !! :(

Je vous remercie.[/code]
 
WRInaute passionné
Tauphraen a dit:
Eh ben je vous répondrais que je ne peux pas faire cela car j'utilise un éditeur d'article en ligne et que je crée mes liens a partir des noms de mes articles or tous mes articles commences par des majuscules (articles sur le seigneur des anneaux donc je me vois mal mettre gandalf au lieu de Gandalf).
Le nom des articles est une chose, le nom des pages en est une autre.

Tu peux récupérer le nom de l'article et passer toutes les majuscules en minuscules pour "générer" le nom de ta page.

> http://fr.php.net/manual/fr/function.strtolower.php
 
Nouveau WRInaute
Je ne connaissais pas cette fonction de php et je vais la tester dans mon script d'édition d'article. je te remercie pour cette information.

Edit: j'ai intégré la fonction dans mon code et ca marche nickel, je te remercie sincèrement pour ta réponse car ça n'a pas provoqué de gros changement dans mon code juste une variable en plus !! :wink:
 
Discussions similaires
Haut