虽然与我的问题here几乎太相关,但我会问,因为我的“问题”和意图已经改变。
获取URI的“可路由”部分的“最佳”(准确,一致,高效的)方式是什么?通过这个,我的意思是URI的一部分代表在PHP应用程序的应用程序路由中使用的虚拟目录。例如:
Bootstrap物理路径:
c:/xampp/htdocs/path/to/app/index.php
Web根路径: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);
我什么都没穿过buncha篮球?有更简单的方法吗?