Заставьте index.php вести себя как каталог - PullRequest
0 голосов
/ 20 мая 2009

Некоторые сайты (например, определенные реализации mediawiki) имеют формат uri http://example.com/index.php/SOME_PAGE. Как это сделать? Является ли index.php просто каталогом на сервере, который назван как php-файл и на самом деле содержит файл с именем SOME_PAGE? Если так, зачем называть это так? Если нет (то есть на самом деле действительно представляет какой-то законный файл PHP), то как будет выглядеть содержимое?

Ответы [ 5 ]

12 голосов
/ 20 мая 2009

Эта функция называется информацией о пути (см. Директива Apache AcceptPathInfo).

Если этот параметр включен, Apache записывает оставшуюся часть запрошенного пути URI, который уже сопоставлен существующему файлу или каталогу, в переменную среды PATH_INFO. Таким образом, если запрашивается /index.php/SOME_PAGE и /index.php является существующим файлом, запрос сопоставляется с этим файлом, а остальная часть пути после /index.php (/SOME_PAGE) становится доступной в переменной PATH_INFO.

1 голос
/ 20 мая 2009

Часто это также делается с помощью файла .htaccess и mod_rewrite.

Подробнее см. в этой статье .

1 голос
/ 20 мая 2009

Он не ведет себя как каталог, просто выглядит так.

index.php - обычный файл php.

Вот учебник о том, как сделать это только с помощью PHP-кода. Проблема в том, что вы получаете только значения и у вас есть бессмысленные ключи в вашем коде.

Пример из учебника, он вызывает index.php / about / Evan / 2

Чтобы получить about из URL, он получает

$url[0]

Это не очень значимо, правда?

0 голосов
/ 20 мая 2009

Эти сайты переписывают входящие запросы, чтобы указывать на фактические ресурсы на сервере, используя такие модули веб-сервера, как apache mod_rewrite .

0 голосов
/ 20 мая 2009

Посмотрите на директиву AcceptPathInfo, используемую в Apache (непосредственно в httpd.conf или через .htaccess). Прошло много времени с тех пор, как я использовал PHP / Apache, и даже дольше, с тех пор, как я выполнял такого рода предварительную проверку URL, но по сути это способ передачи дополнительных данных в index.php без "нормального" синтаксиса html? Var1 = Foo & var2 = бар

Обратите внимание, что когда я это сделал, я установил скрипт под названием 'dynamic' (или аналогичный) в качестве обработчика по умолчанию для анализируемого PHP и сделал мои URL похожими на http://hostname/dynamic/value1/value2

НТН

...