While almost too related to my question here, I'll ask as my "question" and intent have changed.
What is the "best" (accurate, consistent, efficient) way to obtain the "route-able" part of a URI. By this, I mean the part of the URI representing the virtual directories to be used in the application routing of a PHP application. For example:
Bootstrap physical path:
Web root path:c:/xampp/htdocs/path/to/app/index.php
c:/xampp/htdocs/
Given the following request:
http://localhost/path/to/app/foo/bar/baz/
Expected result:
foo/bar/baz/
...but
$_SERVER['REQUEST_URI']
contains:开发者_运维问答path/to/app/foo/bar/baz/
I used to use $_GET['_uri']
in conjunction with mod_rewrite
like so:
# conditions
RewriteRule ^(.*)$ index.php?_uri=$1 [L,QSA]
But am now switching to simply:
# conditions
RewriteRule ^.*$ index.php [L,QSA]
And have got something like this so far:
// 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);
Have I jumped through a buncha hoops for nothing? Is there an easier way to do this?
You could use parse_url
in your parsing.
精彩评论