Какие у меня есть альтернативы для разработки навигации по сайту без .htaccess? - PullRequest
2 голосов
/ 21 декабря 2009

Просто в теории: почти все современные сайты работают так:

somedomain.com/layer1/layer2/action

Например:

http://stackoverflow.com/questions/ask

Обычно это делается с помощью .htaccess и ModRewrite Engine. Некоторое время назад я наткнулся на статью, которая описывает что-то, что пришло прямо из php. Я не помню имя больше. Этот фрагмент кода PHP был осведомлен о текущем открытом URL. Он мог сказать, какой домен называется, как называется TLD, каков первый каталог, каков второй каталог, как называется файл и т. Д.

Я знаю, что Kohana Framework использует эту технологию, но не знаю, где искать. Кто-нибудь знаком с этим?

Ответы [ 5 ]

3 голосов
/ 21 декабря 2009

То, что происходит под поверхностью .htaccess в большинстве случаев, - это то, что вы ищете. Во многих случаях файл .htaccess просто делегирует задачу в файл index.php, который сам подготовлен для обработки значений, переданных в представлении контроллера, метода и параметров.

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

www.mysite.com/index.php/controller/method/parameter1/parameter2
3 голосов
/ 21 декабря 2009

То, что вы имеете в виду, использует переменную окружения PATH_INFO. Смотрите, например здесь

Без доступа к настройкам .htaccess у вас всегда будет один filename.php в пути с помощью этого метода:

www.domain.com/filename.php/questions/ask/
1 голос
/ 21 декабря 2009

Взгляните на шаблон фронтального контроллера .

По сути, все ваши запросы перенаправляются в один файл PHP, который декодирует URL-адрес и определяет следующее действие.

Кстати, это не для PHP.

1 голос
/ 21 декабря 2009

Вы можете использовать комбинацию заголовков HTTP, но они могут быть ненадежными на некоторых веб-серверах. Чтобы увидеть, какие HTTP-заголовки доступны на вашем сервере, создайте страницу со следующим:

<?php phpinfo(); ?>

Найдите раздел «Переменные PHP», в частности, те, которые вы можете использовать:

_SERVER["HTTP_HOST"]
_SERVER["SCRIPT_NAME"]
1 голос
/ 21 декабря 2009

Вы можете поиграть с документом об ошибках apache, но это всего лишь хак (как и переписывание), а не чистое решение.

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