Очистка URL-адресов PathInfo и строк запросов на IIS 5.1 и PHP 5 - PullRequest
0 голосов
/ 11 января 2010

Я пытаюсь получить «чистые» URL-адреса в стиле PathInfo с параметрами строки запроса, работающими на PHP 5.3 и IIS 5.1 с использованием FastCGI. Я обнаружил, что могу использовать:

( 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
)

Есть ли способ заставить работать схему URL, подобную (4) ниже, и при правильном заполнении $ _GET в IIS 5.1?

( 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 голосов
/ 11 января 2010

Для (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.

...