Это будет отправлять любые 404 с пользовательскому контроллеру "/ error" вместе с исходной запрошенной строкой uri:
class MY_Exceptions extends CI_Exceptions{
function __constructor(){
parent::CI_Exceptions();
}
function show_404($page=''){
header('Location: /error'.$_SERVER['REQUEST_URI']);
exit;
}
}
контроллер может затем получить строку URI, добавив "/ blog /" вперед ним, и проверьте, существует ли файл.Если это так, перенаправьте ... если нет, перейдите на другую страницу с ошибкой.Итак, в контроллере «error»:
function index()
{
$this->load->helper('url');
// remove "/error" from the uri
$uri = substr($this->uri->uri_string(),0,6);
$newuri = base_url() . "blog" . $uri;
if(file_exists($newuri)):
redirect($newuri,'location',301);
else:
redirect("/anotherErrorPage");
endif;
}
Я надеюсь, что это поможет!
update : изначально предполагалось использовать htaccess, но поскольку все в CI проходитindex.php .... это действительно не нужно.