Tiret dans mes $_GET et tiret comme séparateur => probleme :/

Nouveau WRInaute
Bonjour,

Je me retrouve bien dans une grosse cata que je n'ai pas pu anticipé car j'étais pourtant sur de mon coup.

En fait j'ai une url avec 2 parametres: $_GET['cat'] et $_GET['page'].
Ces deux parametres peuvent contenir des lettres,chiffres et tirets.

Le problème est que j'ai choisi aussi comme séparateur d'url le caractère tiret (-).

Donc quand je charge une url du type:

www.monsite.com/categorie-1-page-2.html

Et bien il me dit que mon $_GET['cat'] vaut "categorie" alors qu'il devrait récupérer "categorie-1".

Ma règle est la suivante (je la mets si ça peut aider à trouver mon probleme):

Code:
RewriteRule ([0-9a-zA-Z-]+)-([0-9a-zA-Z-]+).html /cat=$2&page=$3

Merci d'avance,
J'espere que ce n'est pas trop compliqué :?
 
WRInaute accro
Bonjour,

Il ne faut pas demander l'impossible. Si ton URL peut être /chapeau-blanc-bonnet.html, je ne vois pas comment Apache pourrait deviner que tu veux dire "chapeau blanc" + "bonnet" plutôt que "chapeau" + "blanc bonnet".

Jean-Luc
 
Nouveau WRInaute
Bonjour,

Ah bon c'est bien ce qui me semblait.

Mais bon pas évident de ne pas demander l'impossible quand on entend sur ce forum que le signe "," n'est pas bien pris en compte lors d'un partage avec le bouton partager de facebook, que le signe + est compté comme un espace, que le "_" ne permet pas de séparer deux mots pour Google... etc etc.

Que faire dans mon cas ? Quel séparateur utiliser ?

Merci encore
 
Nouveau WRInaute
Test sur le type de variable ? Il s'agit de deux string comprenant donc chiffres,lettres et tirets...
Je développe bien en PHP mais je ne comprends pas ce que tu veux dire ?

Sinon quel séparateur choisir à part le tiret ?

Merci pour ta réponse ^^
 
WRInaute accro
S'il y a tjs 4 paramètres, il n'y a pas besoin de tester le type:

-http://example.com/index.php?url=categorie-1-page-2
PHP:
<span class="syntaxhtml"><br /><span class="syntaxdefault"><?php <br /></span><span class="syntaxkeyword">list(</span><span class="syntaxdefault">$cat</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $catId</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $page</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $pageId</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'-'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'url'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault">echo </span><span class="syntaxstring">"$cat $catId $page $pageId"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">?><br /></span></span>
Il y a moyen de faire bcp plus flexible qu'avec le rewrite de cette façon, et surtout, avec 1 seule règle de rewrite:
https://www.webrankinfo.com/forum/pratique-htaccess-lire-avant-poser-t13288 ... l#p1217718
 
Nouveau WRInaute
Non tu ne m'as pas compris en fait ^^ Je vois ce que tu veux dire mais ce n'est pas aussi simple.

Ma premiere variable $_GET peut très bien valoir ceci: "categorie-1-6-3" et mon autre variable pareil.

Bon ce n'est pas grave je pense que je vais malheureusement devoir utiliser un autre séparateur comme l'underscore.

Merci encore à tous^^
 
WRInaute accro
d'un autre côté un truc du genre devrais faire la farce (dans l'esprit)

RewriteRule ([a-zA-Z-]{1,100}-[0-9]{1,4})-([a-zA-Z-]{1,100}-[0-9]{1,4}).html /cat=$2&page=$3

je connais pas l'usage du "+" les{x,y} permettent de fixer un certains nombre d’occurrences possible
 
WRInaute accro
Oui OK sorry j'avais pas fait attention :)

Alors fait un mix des 2 avec slashes et tirets et la méthode de rewrite avec 1 seul paramètre GET (ou QUERY_STRING ou PATH_INFO)
 
Discussions similaires
Haut