|
因为,所以。
默认访问时
index.php/admin/abc
如果想
index.php/admin/library/abc就无法访问了。 提示404
于是一步步地检查
找到了修改的地方,实现了N级目录,现发布修改办法(主要修改一个文件中的两个function)
文件system/core/Router.php
方法名1:_validate_request
修改代码为:PHP复制代码 function _validate_request ($segments)
{
if (count($segments) == 0)
{
return $segments;
}
// Does the requested controller exist in the root folder?
if (file_exists(APPPATH .'controllers/'.$segments[0].'.php'))
{
return $segments;
}
// Is the controller in a sub-folder?
if (is_dir(APPPATH .'controllers/'.$segments[0]))
{
// Set the directory and remove it from the segment array
//chang by lou
$sub_directory_array = [];
$num = $issub = 0;
while(list($a,$b)=each($segments))
{
$num++;
$sub_directory_array[] = $b;
$sub_directory = implode("/", $sub_directory_array);
if(!is_dir(APPPATH .'controllers/'.$sub_directory))
{
$issub = 1;
array_pop($sub_directory_array);
$this->set_directory($sub_directory_array);
break;
}
}
$issub || $this->set_directory($segments[0]);
$segments = array_slice($segments, $num-1);
if (count($segments) > 0)
{
//print_r($segments);
//exit;
// Does the requested controller exist in the sub-folder?
if ( ! file_exists(APPPATH .'controllers/'.$this->fetch_directory().$segments[0].'.php'))
{
if ( ! empty($this->routes['404_override']))
{
$x = explode('/', $this->routes['404_override']);
$this->set_directory('');
$this->set_class($x[0]);
$this->set_method(isset($x[1]) ? $x[1] : 'index');
return $x;
}
else
{
show_404 ($this->fetch_directory().$segments[0]);
}
}
}
else
{
// Is the method being specified in the route?
if (strpos($this->default_controller, '/') !== FALSE)
{
$x = explode('/', $this->default_controller);
$this->set_class($x[0]);
$this->set_method($x[1]);
}
else
{
$this->set_class($this->default_controller);
$this->set_method('index');
}
// Does the default controller exist in the sub-folder?
if ( ! file_exists(APPPATH .'controllers/'.$this->fetch_directory().$this->default_controller.'.php'))
{
$this->directory = '';
return array();
}
}
return $segments;
}
// If we've gotten this far it means that the URI does not correlate to a valid
// controller class. We will now see if there is an override
if ( ! empty($this->routes['404_override']))
{
$x = explode('/', $this->routes['404_override']);
$this->set_class($x[0]);
$this->set_method(isset($x[1]) ? $x[1] : 'index');
return $x;
}
// Nothing else to do at this point but show a 404
show_404 ($segments[0]);
} 复制代码
方法名2:set_directory
修改代码为:
|
评分
-
查看全部评分
|