Получение маршрутной части URI - PullRequest
0 голосов
/ 06 июля 2011

Хотя это почти слишком связано с моим вопросом здесь , я спрошу, как изменились мои "вопрос" и намерение.

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

Физический путь начальной загрузки: c:/xampp/htdocs/path/to/app/index.php
Путь к корневому веб-сайту: c:/xampp/htdocs/

С учетом следующегозапрос:
http://localhost/path/to/app/foo/bar/baz/

Ожидаемый результат:
foo/bar/baz/

... но $_SERVER['REQUEST_URI'] содержит:
path/to/app/foo/bar/baz/

Раньше я использовал $_GET['_uri'] в сочетании с mod_rewrite, вот так:

# conditions
RewriteRule ^(.*)$ index.php?_uri=$1 [L,QSA]

Но сейчас переключаюсьпросто:

# conditions
RewriteRule ^.*$ index.php [L,QSA]

И до сих пор получилось что-то вроде этого:

// get physical uri part, relative to doc root
$uriPhysical = trim(strtr(dirname($_SERVER['SCRIPT_NAME']), '\\', '/'), '/') . '/';

// get full request uri, strip querystring
$uriLong = trim(strtr(substr($_SERVER['REQUEST_URI'], 0, strpos($_SERVER['REQUEST_URI'], '?')), '\\', '/'), '/') . '/';

// chop the physical part off the beginning
$uriRoute = preg_replace('%^' . preg_quote($uriPhysical, '%') . '%i', '', $uriLong);

Я прыгал через обруч пула ни за что?Есть ли более простой способ сделать это?

1 Ответ

1 голос
/ 06 июля 2011

Вы можете использовать parse_url при разборе.

...