Вопрос

Я заметил, что иногда (особенно где mod_rewrite не доступен) Эта схема пути используется:

http://host/path/index.php/clean_url_here
--------------------------^

Этот кажется работать, по крайней мере, в Apache, где index.php называется, и можно запрашивать /clean_url_here Часть через $_SERVER['PATH_INFO']. Отказ PHP даже Вид рекламы эта особенность. Также, например, Codeigniter. Рамки используют эту технику по умолчанию для их URL.

Вопрос: Насколько надежен методика? Есть ли ситуации, где Apache не звонит index.php Но пытается разрешить путь? Как насчет Lighttpd, Nginx, IIS, AOLSERVER?

Вопрос ServerFault? Я думаю, что это больше связано с использованием этой функции внутри PHP-кода. Поэтому я спрашиваю здесь.

Дополнение: Как предложено Volkerk, разумное расширение к этому вопросу: как программист может влиять на существование $_SERVER['PATH_INFO'] На различных типах серверов?

Это было полезно?

Решение

Я думаю, что этот вопрос одинаково подходит для Stackoverflow и ServerFault. Например, я, как разработчик, может только сказать вам, что PathInfo так же заслуживает доверия, так как любой пользовательский ввод (что означает, что он может содержать практически все), и ваш скрипт может или не может получить его в зависимости от версии и конфигурации веб-сервера:

Apache: Acceptathinfo.
IIS: например, Allowenpathinfoforcriptmaphics. и другие
И так далее и на ...

Но администраторы сервера могут сказать вам, какие настройки вы можете ожидать «в реальном мире», и почему эти настройки являются предпочтительными.
Таким образом, вопрос становится: какое влияние вы (или ожидаемая пользовательская группа) имеют на конфигурации сервера.

Другие советы

Acceptathinfo. должен быть включен для того, чтобы иметь эту работу.

Из моего опыта я бы сказал PATH_INFO является Обычно доступны в обычных средах веб-хостинга и настроек сервера - даже на IIS - но в редких случаях, это не так. При создании приложения, которое должно быть развертываемым на столько платформ, насколько это возможно, я бы не доверял Path_Info на жестком уровне.

Всякий раз, когда я могу, я пытаюсь построить функцию обертки build_url() что, в зависимости от настройки конфигурации, использует либо

  • необработанный URL www.example.com/index.php?clean_url=clean_url_here
  • механизм path_info. www.example.com/index.php/clean_url
  • mod_rewrite. www.example.com/clean_url

И используйте это во всех URL-адресах приложение.

Там могут быть наивные сценарии (например, автоматическое соединение), которые не распознают этот формат URL. Тем самым уменьшая вероятность того, что ссылки на ваш контент будут созданы.
Поскольку на этих задачах распространены шаблоны регулярных экспрессионных выражений, вероятность неудачи вполне реально.

Технически эти URL-адреса в порядке. SEO-WISE, они «менее идеальны».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top