Pattern PRG, ordre des get, url rewriting - htaccess

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par stck, 14 Février 2013.

Tags:
  1. stck
    stck Nouveau WRInaute
    Inscrit:
    13 Janvier 2013
    Messages:
    11
    J'aime reçus:
    0
    Bonjour à tous, je suis confronté à un petit problème de rewriting :
    Dans mon htaccess j'ai ça :
    Code:
    RewriteRule ^recherche(.*)$ /rechercher.php?param1=$1&param2=$2&param3=$3$param4=$4&param5=$5 [QSA]
    l'url est donc comme ceci : recherche?param1=xx&param2=xx&param3=xx&param4=xx&param5=xx
    :arrow: l'avantage de ça c'est que je peux mettre les param dans l'ordre que je veux, en oublier certains etc ça ne plante pas (mais c'est pas super beau)

    Je voudrais obtenir une URL comme ceci :
    recherche/param1:xx/param2:xx/param3:xx/param4:xx/param5:xx
    ma rewrite rule est comme ceci :
    Code:
    RewriteRule ^recherche/param1:([a-zA-Z0-9\-]*)/param2:([a-zA-Z0-9\-]*)/param3:([a-zA-Z0-9\-]*)/param4:([a-zA-Z0-9\-]*)/param5:([a-zA-Z0-9\-]*)$ rechercher.php?param1=$1&param2=$2&param3=$3$param4=$4&param5=$5 [L]
    J'utilise un pattern prg assez simple pour rediriger mon url avec les params et ça marche très bien. Sauf que ...
    :arrow: Le désavantage de cette méthode c'est que je ne peux pas intervertir les params ni en réduire le nombre ex :
    recherche/param3:xx/param1:xx/param4:xx

    à moins de me taper toutes les règles une par une dans le htaccess (ça en ferait vraiment beaucoup, du coup je me demande si c'est bien optimisé d'en mettre autant ...), est-ce que vous connaissez une méthode ou auriez une solution pour ça? :D (peut être un truc magique que j'aurai loupé dans le htaccess?)

    D'avance merci à ceux qui sauront me répondre.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    337
  3. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    337
    Allez un petit exemple:

    .htaccess
    Code:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]
    
    index.php
    PHP:
    <span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><?</span><span class="syntaxdefault">php<br />$params&nbsp;</span><span class="syntaxkeyword">=&nbsp;isset(</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PATH_INFO'</span><span class="syntaxkeyword">])&nbsp;?&nbsp;</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PATH_INFO'</span><span class="syntaxkeyword">]&nbsp;:&nbsp;</span><span class="syntaxdefault">null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$params&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$params</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">array_shift</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$params</span><span class="syntaxkeyword">);<br /><br />if&nbsp;(!empty(</span><span class="syntaxdefault">$params</span><span class="syntaxkeyword">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$namedParams&nbsp;</span><span class="syntaxkeyword">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span class="syntaxdefault">$params&nbsp;</span><span class="syntaxkeyword">as&nbsp;</span><span class="syntaxdefault">$param</span><span class="syntaxkeyword">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span class="syntaxdefault">strpos</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$param</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">':'</span><span class="syntaxkeyword">)&nbsp;!==&nbsp;</span><span class="syntaxdefault">false</span><span class="syntaxkeyword">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list(</span><span class="syntaxdefault">$named</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">)&nbsp;=&nbsp;</span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">':'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$param</span><span class="syntaxkeyword">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$namedParams</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$named</span><span class="syntaxkeyword">]&nbsp;=&nbsp;</span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$namedParams</span><span class="syntaxkeyword">);<br />}<br />&nbsp;</span><span class="syntaxdefault"></span>
    http://example.com/a:1/b:2/c:3
    Affichera:
    Array ( [a] => 1 => 2 [c] => 3 )
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    337
    Merci :roll:
     
  5. stck
    stck Nouveau WRInaute
    Inscrit:
    13 Janvier 2013
    Messages:
    11
    J'aime reçus:
    0
    Huuuuu, je suis désolé, j'ai complétement oublié de répondre, merci, merci beaucoup spout !
    Ça a totalement résolu mon problème :mrgreen:
     
Chargement...
Similar Threads - Pattern PRG ordre Forum Date
syntaxe, pattern redirect Crawl et indexation Google, sitemaps 1 Octobre 2019
Design pattern MVC, URLs et Controleur Frontal Développement d'un site Web ou d'une appli mobile 22 Mars 2014
Même pattern mais paramètre différent URL Rewriting et .htaccess 3 Novembre 2009
[url rewrite] verfier qu'un pattern n'est pas present URL Rewriting et .htaccess 9 Juin 2008
Pattern pointant sur un scriptalias ? URL Rewriting et .htaccess 29 Janvier 2004