简单的PHP模块.htaccess


Simple PHP Modules .htaccess

我已经开始创建一个简单的模块系统,帮助我构建并可视化应用程序的所有页面将如何在幕后组织。

我开始觉得这不是一个很好的方法来实现这一点,因为我最终会得到一个巨大的.htaccess文件来重写每个模块的所有url。

RewriteEngine On
RewriteRule ^login$ index.php?page=login

每个模块都应该有自己的控制器,这样它就可以与其他模块代码分离,任何模块内的任何页面都应该能够从根index.php文件中访问配置数组值。

<?php
if(isset($_GET['page'])) {
    switch($_GET['page']) {
        case 'login':
            $page = 'modules/default/login.php';
        break;
    }
} else {
    $page = 'modules/default/homepage.php';
}
include($page);
?> 

当我添加包含其他页面的帐户模块时,会发生什么问题。例如/account或/account/profile

<?php
if(isset($_GET['page'])) {
    switch($_GET['page']) {
        case 'settings':
            $page = 'modules/account/settings/index.php';
        break;
    }
} else {
    $page = 'modules/account/index.php';
}
include($page);
?> 

有更好的方法吗?希望你能看到我在做什么。

最好让您的规则捕获所有不是文件或目录的URI,如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [L,QSA]

然后使用$_GET['page']参数获取PHP代码中的所有URI值。