获取可路由的URI部分

时间:2011-07-06 15:36:25

标签: php routing uri

虽然与我的问题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篮球?有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以在解析中使用parse_url