Pulire PathInfo URL e stringhe di query su IIS 5.1 e PHP 5
-
19-09-2019 - |
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).
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
.