OVH Cloud OVH Cloud

.htaccess : 'pige pas !

6 réponses
Avatar
Peter Pan
Salut les gens !

J'ai un souci avec cette règle :
RewriteRule ^(.+)_foo_([0-9]+)\.php page.php?id=$2&title=$1 [QSA]

Elle fonctionne parfaitement mais "title", que je récupère pour
affichage, est retourné en minuscules quelle que soit sa forme.
Idée ?

PS : bonne année à tous et toutes :-)

--
Pierre
http://www.1966.fr/

6 réponses

Avatar
O.L.
Peter Pan a formulé la demande :
Salut les gens !

J'ai un souci avec cette règle :
RewriteRule ^(.+)_foo_([0-9]+).php page.php?id=$2&title=$1 [QSA]

Elle fonctionne parfaitement mais "title", que je récupère pour affichage,
est retourné en minuscules quelle que soit sa forme.
Idée ?

PS : bonne année à tous et toutes :-)



Bizarre ...
T'es sûr de pas avoir oublié un petit strtolower() qq part des fois ?
:)

C'est quoi le paramètre QSA ?

Est ce que $_SERVER['REDIRECT_URI'] (ou 'REDIRECT_URL' je sais plus)
t'affiche aussi tout en minuscule ?

@+
Avatar
CrazyCat
O.L. wrote:
Peter Pan a formulé la demande :
J'ai un souci avec cette règle :
RewriteRule ^(.+)_foo_([0-9]+).php page.php?id=$2&title=$1 [QSA]
Elle fonctionne parfaitement mais "title", que je récupère pour
affichage, est retourné en minuscules quelle que soit sa forme.


T'es sûr de pas avoir oublié un petit strtolower() qq part des fois ? :)



Je pense aussi que c'est ton code et non pas le htaccess qui opère cette
transformation.

C'est quoi le paramètre QSA ?



Query String Append: tous les paramêtres qui sont ajoutés à l'url
"initiale" sont aussi ajoutés à l'url de destination.


--
Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu
Avatar
Peter Pan
O.L. a écrit Le 24/01/2007 15:56 :
Bizarre ...



Ouaip !

T'es sûr de pas avoir oublié un petit strtolower() qq part des fois ? :)



Oui.

C'est quoi le paramètre QSA ?



Query String Append (transmet tout ce qu'il y a après ?). Et justement,
un $_SERVER['QUERY_STRING'] balance "title" en minuscules alors que...

Est ce que $_SERVER['REDIRECT_URI'] (ou 'REDIRECT_URL' je sais plus)
t'affiche aussi tout en minuscule ?



... $_SERVER['REQUEST_URI']* vient tel quel (logique).
'Pige toujours pas. Je vais revoir ma conversion de caractères.

(*) http://fr.php.net/reserved.variables

--
Pierre
http://www.1966.fr/
Avatar
Peter Pan
CrazyCat a écrit Le 24/01/2007 16:07 :
Je pense aussi que c'est ton code et non pas le htaccess qui opère cette
transformation.



Tu penses bien que je l'ai épluché. Au point de faire dans le dur :

1) .htaccess
RewriteRule ^(.+)_foo_([0-9]+).php page.php?id=$2&title=$1 [QSA]

2) unepage.php (écrit tel quel)
<a href='Blah_foo_17.php'>ZyVa</a>

3) page.php
QUERY_STRING : id&title=blah
REQUEST_URI : /monsite/Blah_foo_17.php

Et si j'écris une règle où "id" est alphanumérique, même combat.
De même en ligne, bien sûr.

En l'absence d'une solution, je vais travailler REQUEST_URI.


--
Pierre
http://www.1966.fr/
Avatar
CrazyCat
Peter Pan wrote:
1) .htaccess
RewriteRule ^(.+)_foo_([0-9]+).php page.php?id=$2&title=$1 [QSA]



Question stupide, et même si la réponse est affirmative, je ne pense pas
que ça joue vraiment mais ça peut valoir le coup d'essayer: est-ce que
tu n'aurais pas mis le flag [NC] dans un RewriteCond précédent?

Et petit tip en passant: si tu veux conserver la majuscule dans ton
titre (si c'est juste pour de l'affichage), ucfirst() et ucwords()
peuvent venir à ton secours.
Et ce sera plus propre que de mettre des majuscules dans une url :)

--
Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu
Avatar
Peter Pan
CrazyCat a écrit Le 24/01/2007 17:39 :
tu n'aurais pas mis le flag [NC] dans un RewriteCond précédent?



Neine.

Et petit tip en passant: si tu veux conserver la majuscule dans ton
titre (si c'est juste pour de l'affichage), ucfirst() et ucwords()
peuvent venir à ton secours.



J'y ai bien pensé, mais le titre est souvent complexe et _doit_
respecter les acronymes. C'est là que le bât blesse.

Et ce sera plus propre que de mettre des majuscules dans une url :)



Clair :-)

Voilà mieux, je pense, qu'un passage en QSA.
Accroche toi au pinceau, j'enlève l'échelle !

En remplaçant ([0-9]+) par (.+) dans la règle, et en virant les QSA
(sauf le tag si besoin) qui ne servent plus ici, on peut avoir :

<a href='Un-Titre-CQFD_foo_fichier.jpg.php'>Let's go</a>
(je passe sur la fonction qui écrit et nettoie l'URL dynamique)

// REQUEST_URI = /monsite/Un-Titre-CQFD_foo_fichier.jpg.php
$tableau = explode("_",basename($_SERVER['REQUEST_URI']));

// $tableau[0] = Un-Titre-CQFD
echo "<h1>".str_replace("-"," ",$tableau[0])."</h1>";

// $tableau[2] = fichier.jpg.php
$fichier = explode(".",$tableau[2]);

// $fichier[0] = fichier
// $fichier[1] = jpg
echo "<img src='pic/$fichier[0].$fichier[1]' alt=''>";


--
Pierre
http://www.1966.fr/