Php 为MVC框架构建URL规则映射

Php 为MVC框架构建URL规则映射,php,Php,在在线学习了一些教程之后,我构建了自己的PHP MVC框架。我使用.htaccess中的一个输入脚本来完成这些工作,如下所示: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA] 我有一个路由器类,它基本上转换URL并将其划分为动作/控制器段: $route = (empty($_

在在线学习了一些教程之后,我构建了自己的PHP MVC框架。我使用
.htaccess
中的一个输入脚本来完成这些工作,如下所示:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]
我有一个路由器类,它基本上转换URL并将其划分为动作/控制器段:

$route = (empty($_GET['rt'])) ? '' : $_GET['rt'];

if (empty($route))
{
    $route = 'index';
}
else
{
    /*** get the parts of the route ***/
    $parts = explode('/', $route);
    $this->controller = $parts[0];

    if(isset( $parts[1]))
    {
        $this->action = $parts[1];
    }
}
我想做的是进一步定义URL重写规则,这些规则在自动路由之外也起作用。所以基本上我希望能够做这样的事情:

$rules = array(
    'directory/listing/<id>' => 'listing/index',
    'directory/<category>/<location>' => 'directory/view',
);
因此,本质上URL需要首先对照数组键进行检查,如果它匹配其中一个键,那么它需要使用数组值作为控制器/操作对


有人知道怎么做吗?

我不确定在您的环境中实现这一点所需的确切代码,但我可以提到,这正是Magento的URL重写功能。他们的URL结构为
/,请查看。它可能会帮助您朝着正确的方向前进:

我使用一个网站来提供一些开发帮助:它有一个关于MVC框架的逐步视频指南
public function actionIndex($id) {
}

public function actionView($category, $location) {
}
array(
    'id' => 20,
    'meta' => 25
)