Domanda

Sto cercando di ottenere 'puliti' URL stile pathinfo con parametri di stringa di query che lavorano su PHP 5.3 e IIS 5.1 utilizzando FastCGI. Ho scoperto che posso usare:

( 1 ) http://www.example.com/index.php?/path/to/foo/

, ma non:

( 2 ) http://www.example.com/index.php/path/to/foo/ (Si noti la mancanza )

Il che non è un grosso problema fino a quando ho voglia di mescolare gli URL con una stringa di query del tipo:

( 3 ) http://www.example.com/index.php?/path/to/foo/?color=blue&size=small

Questo rende il mio $ _GET apparire come:

Array
(
    [/myapp/foo/bar?colour] => blue
    [size] => small
)

C'è modo per ottenere uno schema URL del tipo (4) sotto al lavoro, e con $ _GET viene popolata correttamente su IIS 5.1?

( 4 ) http://www.example.com/index.php/path/to/foo/?color=blue&size=small

P.S. - Mi ricordo di essere in grado di farlo prima, ma ho il sospetto che stavo usando Apache al momento e non IIS. Impossibile utilizzare Apache per questo. Tuttavia, il server di produzione ha IIS7 (ho solo IIS 5.1 sulla mia macchina).

È stato utile?

Soluzione

Per (3), è sufficiente per trattare la query-stringa come un unico pezzo di testo. Non si dovrebbe usare $_GET - si dovrebbe utilizzare la variabile d'ambiente QUERY_STRING direttamente, invece. Si dovrebbe ottenere /path/to/foo/?color=blue&size=small.

Per (4), si dovrebbe concatenare le variabili PATH_INFO e ambiente QUERY_STRING, unito con una ?, e utilizzare tale valore. Anche in questo caso, si dovrebbe ottenere /path/to/foo/?color=blue&size=small. Questo perché PATH_INFO ha /path/to/foo e QUERY_STRING ha color=blue&size=small.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top