0

我正在尝试使用 FastCGI 在 PHP 5.3 和 IIS 5.1 上使用查询字符串参数获取“干净”的 PathInfo 样式 URL。我发现我可以使用:

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

但不是:

2http://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

PS - 我记得以前能够做到这一点,但我怀疑我当时使用的是 Apache 而不是 IIS。无法为此使用 Apache。但是生产服务器有 IIS7(我的机器上只有 IIS 5.1)。

4

1 回答 1

0

对于 (3),您只需将查询字符串视为单个文本。您不应该使用$_GET- 您应该直接使用QUERY_STRING环境变量。你应该得到/path/to/foo/?color=blue&size=small.

对于 (4),您应该连接PATH_INFOQUERY_STRING环境变量,与 a 连接?,并使用该值。同样,你应该得到/path/to/foo/?color=blue&size=small. 这是因为PATH_INFOhas/path/to/fooQUERY_STRINGhas color=blue&size=small

于 2010-01-11T15:46:37.190 回答