我正在尝试使用FastCGI在PHP 5.3和IIS 5.1上使用查询字符串参数获取“干净”的PathInfo样式URL。我发现我可以使用:
( 1 )http://www.example.com/index.php?/path/to/foo/
但不是:
( 2 )http://www.example.com/index.php/path/to/foo/
(请注意缺少的?)
在我想要将URL与查询字符串混合之前,这不是一个大问题:
( 3 )http://www.example.com/index.php?/path/to/foo/?color=blue&size=small
这使我的$ _GET看起来像:
Array
(
[/myapp/foo/bar?colour] => blue
[size] => small
)
有没有办法让下面的(4)这样的URL方案工作,并且在IIS 5.1上正确填充了$ _GET?
( 4 )http://www.example.com/index.php/path/to/foo/?color=blue&size=small
P.S。 - 我记得之前能够做到这一点,但我怀疑我当时使用Apache而不是IIS。无法使用Apache。但是生产服务器有IIS7(我的机器上只有IIS 5.1)。
答案 0 :(得分:0)
对于(3),您只需将查询字符串视为单个文本。您不应该使用$_GET
- 您应该直接使用QUERY_STRING
环境变量。你应该得到/path/to/foo/?color=blue&size=small
。
对于(4),您应该连接PATH_INFO
和QUERY_STRING
环境变量,并使用?
加入,并使用该值。同样,你应该得到/path/to/foo/?color=blue&size=small
。这是因为PATH_INFO
有/path/to/foo
而QUERY_STRING
有color=blue&size=small
。