用PHP重写URL而不是服务器配置

时间:2011-08-25 20:21:39

标签: php routing url-rewriting

我正在寻找一个非常轻量级的路由框架(与php-skel一起使用)。

我想调查的第一件事是在php文件中指定重写规则(“not found”处理程序),其方式与在服务器配置中指定的方式类似。

这是一个潜在的例子(但我想知道哪些框架提供了这种轻量级的东西):

文件route.php:

route('application/api', '/api/index.php');
route('application', '/application/index.php');

文件appplication / index.php:

route(':module/:action', function($module, $action) {
    include(__DIR__ . '/' . $module . '/' . $action . '.php');
});

什么是轻量级路由框架/功能或技术?

3 个答案:

答案 0 :(得分:2)

php方式:

http://example.com/index.php/controller/action/variables

$routing = explode("/" ,$_SERVER['PATH_INFO']);
$controller = $routing[1];
$action = $routing[2];
$variables = $routing[3];

答案 1 :(得分:0)

PHP有一个parse url函数,可以很容易地用于路由。 然后,您可以在返回的路径部分调用explode()以获取url组件的数组。

答案 2 :(得分:-2)

PHP不能像mod_rewrite那样重写URL,它只能重定向到其他页面,这基本上会使服务器上的点击次数加倍(1次点击php脚本,第2次点击重定向目标)。

但是,您可以让PHP脚本动态加载“重定向”页面的内容:

switch($_GET['page']) {
    case 1:
        include('page1.php');
        break;
    case 2:
        include('page2.php');
        break;
    default:
        include('page1.php');
}

这对用户来说非常透明,你可以获得与mod_rewrite基本相同的效果。使用适当的query和path_info参数,您可以很好地复制mod_write“pretty”url。