2010-04-02 4 views
4

De quelle manière est-il d'obtenir deux méthodes GET dans l'URL par htaccess?Obtenir deux variables dans l'URL avec htaccess

RewriteRule ^adm/(.*)$ adm.php?mode=$1 

Je l'ai utilisé que pour l'exemple URL:

http://www.domain.com/adm/thismode 

Maintenant, je veux obtenir deux méthodes comme:

http://www.domain.com/adm/thismode/othermode 

J'ai essayé ceci:

RewriteRule ^adm/(.*)$/(.*)$ adm.php?mode=$1&othermode=$2 

Mais ne semble pas fonctionner ... comment l'obtenir pour faire ça?

EDIT:

$ mode1 = $ _GET [ 'mode'];

$ mode2 = $ _GET ['othermode'];

Comme ça ...

EDIT DE NOUVEAU:

http://www.domain.com/adm/generated/pass/6z9c4q9k8p 

droit ... c'est l'URL qu'il a à faire

Et dans le PHP, il a ceci:

if($mode == "generated") 

Je veux que le PHP vérifie si le mode est défini dans l'URL e le mot de passe généré est l'autre GET

Je mets le htaccess comme cette façon:

RewriteRule ^adm/(.*)/(.*)$ adm.php?mode=$1&generated=$2 

Le PHP saisira également le mot de passe généré dans l'URL et l'afficher sur la page.

+0

Je pense que vous devez décrire ce dont vous avez besoin avec un terme autre que "méthodes GET" vu que la méthode GET signifie quelque chose d'autre: http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods –

+0

Édité le poste .. – MacMac

Répondre

10

Quel est le problème que vous avez maintenant On dirait que Richard vous a trouvé ce dont vous aviez besoin?

En utilisant votre exemple URL:

http://www.domain.com/adm/generated/pass/6z9c4q9k8p 

et ce qui suit dans votre.htaccess

RewriteRule ^adm/(.*)/(.*)/(.*)$ adm.php?mode=$1&generated=$2&pass=$3 

alors vous pouvez faire:

$mode1 = $_GET['mode']; 
$generated = $_GET['generated']; 
$pass = $_GET['pass']; 
if ($mode1 == 'generated' && $generated == 'pass') 
    echo $pass; 

ou est-ce pas votre question?

+0

PARFAIT: D merci pour cette méthode – MacMac

6

Dans les RegEx compatibles Perl, un $ est une ancre, qui dénote "la fin". Donc, retirez le $ du milieu de votre modèle, après ^adm/(.*):

RewriteRule ^adm/(.*)/(.*)$ adm.php?mode=$1&othermode=$2 
+0

+1, mais il n'est pas nécessaire d'échapper aux barres obliques dans le contexte ci-dessus (le signe dollar peut également être omis). – ChristopheD

+0

J'ai encore édité le message ... besoin d'aide sur l'autre bit – MacMac

+0

@ChristopheD - Cool! Merci; Je vais enlever la partie "échapper aux barres obliques". –

0

Au lieu d'écrire des expressions régulières complexes dans le .htaccess, je voudrais juste utiliser un simple

RewriteCond $1 !^adm\.php 
RewriteRule ^adm/(.*)$ adm.php/$1 [L] 

et travailler avec l'intérieur $_SERVER['PHP_SELF']adm.php donc vous pouvez gérer n'importe quel type d'URL complexe qui commence par adm sans changer le .htaccess.

Questions connexes