查看 MVC 框架 CodeIgniter 在其自己的index.php
文件中处理文件路由的方式:
$system_path = '系统';
$application_folder = '应用程序';
$view_folder = '';
/*
* ------------------------------------------------- --------------
*解决系统路径以提高可靠性
* ------------------------------------------------- --------------
*/
// 为 CLI 请求正确设置当前目录
如果(定义('STDIN'))
{
chdir(目录名(__FILE__));
}
if (($_temp = realpath($system_path)) !== FALSE)
{
$system_path = $_temp.'/';
}
别的
{
// 确保有一个斜杠
$system_path = rtrim($system_path, '/').'/';
}
// 系统路径是否正确?
如果(!is_dir($system_path))
{
header('HTTP/1.1 503 服务不可用。', TRUE, 503);
exit('您的系统文件夹路径似乎设置不正确。请打开以下文件并更正:'.pathinfo(__FILE__, PATHINFO_BASENAME));
}
/*
* ------------------------------------------------- ------------------
* 现在我们知道了路径,设置主路径常量
* ------------------------------------------------- ------------------
*/
// 这个文件的名字
定义('SELF',路径信息(__FILE__,PATHINFO_BASENAME));
// 系统文件夹路径
定义('BASEPATH', str_replace('\\', '/', $system_path));
// 前端控制器的路径(这个文件)
定义('FCPATH', str_replace(SELF, '', __FILE__));
// “系统文件夹”的名称
定义('SYSDIR',修剪(strrchr(修剪(BASEPATH,'/'),'/'),'/'));
// “应用程序”文件夹的路径
if (is_dir($application_folder))
{
if (($_temp = realpath($application_folder)) !== FALSE)
{
$application_folder = $_temp;
}
定义('APPPATH', $application_folder.'/');
}
别的
{
if ( !is_dir(BASEPATH.$application_folder.'/'))
{
header('HTTP/1.1 503 服务不可用。', TRUE, 503);
exit('您的应用程序文件夹路径似乎设置不正确。请打开以下文件并更正:'.SELF);
}
定义('APPPATH', BASEPATH.$application_folder.'/');
}
// “views”文件夹的路径
如果(!is_dir($view_folder))
{
if ( !empty($view_folder) && is_dir(APPPATH.$view_folder.'/'))
{
$view_folder = APPPATH.$view_folder;
}
elseif ( !is_dir(APPPATH.'views/'))
{
header('HTTP/1.1 503 服务不可用。', TRUE, 503);
exit('您的视图文件夹路径似乎设置不正确。请打开以下文件并更正:'.SELF);
}
别的
{
$view_folder = APPPATH.'views';
}
}
if (($_temp = realpath($view_folder)) !== FALSE)
{
$view_folder = realpath($view_folder).'/';
}
别的
{
$view_folder = rtrim($view_folder, '/').'/';
}
定义('VIEWPATH',$view_folder);
您不应该依赖.htaccess
,您可能会遇到mod_rewrite
不可用的环境的问题。
此外,不要views/
从超链接加载目录中的文件。将所有这些对页面的请求从 index.php 路由到您的controllers/
.,然后使用这些类来加载文件。再次仔细查看 CodeIgniter 的源代码以获取想法。