我已经开始创建一个简单的模块系统,帮助我构建并可视化应用程序的所有页面将如何在幕后组织。
我开始觉得这不是一个很好的方法来实现这一点,因为我最终会得到一个巨大的.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值。