Parce que $_GET
contient les variables dans la chaîne de requête - qui est la partie de l'URL après le point d'interrogation. Notez que les règles de réécriture dans votre fichier .htaccess
transforment toutes les URL qui ne se réfèrent pas aux fichiers ou répertoires existants en seulement index.php
, sans aucune trace de l'URL d'origine (bien que, comme le commentaire de Gumbo me l'a rappelé, il est toujours accessible via $_SERVER['REQUEST_URI']
. RewriteRule
s ne créent pas une chaîne de requête (ils ne mettent pas un point d'interrogation dans l'URL), ce qui est ce que vous devez faire pour utiliser $_GET
.
Je suggère de remplacer votre dernière RewriteRule
avec quelque chose comme
RewriteRule ^.*$ index.php$0 [NC,L]
Cela $0
ajoutera l'URL d'origine à index.php
- par exemple, http://localhost/index/index/test/1234/test2/4321
deviendra http://localhost/index.php/index/index/test/1234/test2/4321
Ensuite, la requête sera traitée par index.php
et la variable $_SERVER['PATH_INFO']
sera définie sur l'URL d'origine, /index/index/test/1234/test2/4321
. Vous pouvez écrire du code PHP pour l'analyser et choisir les paramètres que vous voulez.
Si vous ne voulez pas le /index/index
au début à enregistrer dans la variable path_info, vous pouvez utiliser un RewriteRule
comme ceci:
RewriteRule ^/index/index(.*)$ index.php$1 [NC,L]
ou
RewriteRule ^(/index)*(.*)$ index.php$2 [NC,L]
à dépouiller n'importe quel numéro de /index
es.
EDIT: En fait, vous pouvez garder votre existant RewriteRule
s et il suffit de regarder $_SERVER['REQUEST_URI']
pour obtenir l'URI demande initiale; pas de déconner avec l'information de chemin est nécessaire. Ensuite, vous pouvez diviser cela comme vous le souhaitez en PHP.
Ceci est la réponse ... Je suppose que je suis sorti de la bande, comme j'utilisais _GET $ avec le Zend_Filter_Input. – MichaelICE