2010-09-03 22 views
3

J'ai un problème avec un point d'interrogation dans l'URL. Par exemple: J'ai l'url test.com/controller/action/part_1%3Fpart_2 (où% 3F est url codé point d'interrogation), et avec cette règle de réécriture: RewriteRule .* index.php/$0 [PT], il doit être passé à l'infrastructure que j'utilise (Kohana) tel quel. Au moins, je le pensais.Point d'interrogation dans l'URL (Apache)

Le problème est que tout ce qui suit le point d'interrogation codé url est traité en tant que paramètre GET, si Kohana ne reçoit que la part_1 et je peux voir qu'il ya un tableau clé part_2 dans $_GET. Je pense que c'est le problème des serveurs web (apache 2.2).

Que dois-je faire pour que apache ne traite pas le point d'interrogation codé url comme un indicateur de paramètre GET?

Répondre

0

Le point d'interrogation est l'un des reserved characters, utilisé comme séparateur entre les composants PATH et QUERY. Donc, vous ne pouvez pas l'utiliser comme une partie du chemin URI.

+2

Il peut être utilisé, s'il est échappé - "Si les données d'un composant URI entrent en conflit avec le but réservé, alors les données en conflit doivent être échappées avant de former l'URI." (à partir du lien que vous avez donné). Aussi, vous pouvez vérifier ici http://www.blooberry.com/indexdot/html/topics/urlencoding.htm sur l'encodage de l'URL. Dans mon exemple, le point d'interrogation EST échappé (codage URL). – egis