【问题标题】:Rewriting URLs in PHP instead of server config用 PHP 重写 URL 而不是服务器配置
【发布时间】:2011-08-26 17:07:16
【问题描述】:

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

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

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

文件路由.php:

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

文件应用程序/index.php:

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

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

【问题讨论】:

    标签: php routing url-rewriting


    【解决方案1】:

    php方式:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        这对用户来说几乎是透明的,而且你得到的效果与 mod_rewrite 基本相同。使用适当的查询和 path_info 参数,您可以很好地复制一个 mod_write “漂亮” url。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-19
          • 2017-04-17
          • 1970-01-01
          • 1970-01-01
          • 2021-07-11
          相关资源
          最近更新 更多