Чистые URL PHP без доступа к настройкам Apache - PullRequest
2 голосов
/ 28 мая 2009

Мне известны все канонические способы получения чистых URL-адресов (www.mysite.com/getarticle?a=123 против www.mysite.com/getarticle/123).

Эти решения, в основном, включают mod_rewrite, force_type и различные конфигурации apache.

Поскольку у меня нет доступа к такой конфигурации на моем общем хостинге, есть ли какое-нибудь решение / хак, чтобы обойти ограничение и получить работу? Спасибо.

Ответы [ 3 ]

3 голосов
/ 28 мая 2009

Да.

Если вы вызываете скрипт через www.example.com/index.php/my/path/here, вы можете довольно легко получить путь запроса из $_SERVER. Я лично использую $_SERVER['PHP_SELF'], но есть несколько вариантов на выбор в зависимости от используемой версии PHP.

2 голосов
/ 28 мая 2009

Просто чтобы быть уверенным - вы уверены, что не можете использовать mod_rewrite?

Если он установлен / включен на сервере общего хостинга, вы можете просто поместить файл .htaccess в каталог public_html с правилами перезаписи в нем. Нет необходимости изменять фактическую конфигурацию apache.

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

Вы не можете использовать другие URL-адреса, кроме системно-зависимых, если система не может правильно обрабатывать их. А собственное поведение веб-серверов заключается в сопоставлении запрошенного пути URL-адреса один на один с файловой системой.

Но большинство веб-серверов предоставляют некоторые функции, позволяющие таким вещам отображать запрошенный путь URL-адреса с помощью определенных правил в файловой системе.

Например, Apache имеет AcceptPathInfo для добавления дополнительных сегментов пути после URL-пути, который уже ссылается на существующий файл, при сохранении этой информации (см. PATH_INFO переменная окружения) и mod_rewrite для еще большей функциональности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...