2010-01-11 49 views
0

我試圖使用FastCGI獲取使用查詢字符串參數在PHP 5.3和IIS 5.1上工作的'clean'PathInfo樣式URL。我發現我可以使用:在IIS 5.1和PHP 5上清理PathInfo URL和查詢字符串

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

但不是:

()http://www.example.com/index.php/path/to/foo/(?注意失蹤

其中ISN直到我想將URL與查詢字符串混合在一起時纔是一個大問題,例如:

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

這讓我的$ _GET樣子:

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

有沒有辦法讓像(4)下面的工作,並與$ _GET被正確填充在IIS 5.1中的URL方案?

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

P.S. - 我記得以前能夠做到這一點,但我懷疑我當時使用的是Apache而不是IIS。無法爲此使用Apache。但是生產服務器有IIS7(我的機器上只有IIS 5.1)。

回答

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

+0

謝謝!這很好。對於IIS5,因爲它需要'index.php?'而不僅僅是'index.php',我還需要分割'?',然後對結果使用parse_str。 – 2010-01-14 18:43:13