Question

I'm trying to get 'clean' PathInfo style URLs with query string parameters working on PHP 5.3 and IIS 5.1 using FastCGI. I've found that I can use:

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

but not:

(2) http://www.example.com/index.php/path/to/foo/ (Note the missing ?)

Which isn't a big issue until I want to mix URLs with a query string like:

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

That makes my $_GET look like:

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

Is there way to get a URL scheme like (4) below to work, and with $_GET being populated correctly on IIS 5.1?

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

P.S. - I remember being able to do this before, but I suspect I was using Apache at the time and not IIS. Unable to use Apache for this. However the production server has IIS7 (I only have IIS 5.1 on my machine).

Was it helpful?

Solution

For (3), you simply need to treat the query-string as a single piece of text. You should not be using $_GET - you should be using the QUERY_STRING environment variable directly, instead. You should get /path/to/foo/?color=blue&size=small.

For (4), you should concatenate the PATH_INFO and QUERY_STRING environment variables, joined with a ?, and use that value. Again, you should get /path/to/foo/?color=blue&size=small. This is because PATH_INFO has /path/to/foo and QUERY_STRING has color=blue&size=small.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top