在IIS 5.1和PHP 5上清理PathInfo URL和查询字符串

时间:2010-01-11 15:39:27

标签: php iis-5 clean-urls

我正在尝试使用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)。

1 个答案:

答案 0 :(得分:0)

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

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