CodeIgniter 2 - 仅在用户通过身份验证时显示 404 页面

CodeIgniter 2 - Display 404 Page Only When User is Authenicated

我有一个 CodeIgniter 2 应用程序,目前 returns 每当用户请求无效 URL 时都会出现 404 页面。在我的 MY_controller.php 文件中,我有一个检查用户是否通过身份验证的函数。如果用户请求的 URL 有效且用户未登录,则他们将被重定向到登录页面。如果他们请求的 URL 无效,无论他们是否登录,他们都会看到 404 页面。

如果用户未登录,即使用户请求无效 URL,是否仍然可以将用户重定向到登录页面?

有可能。步骤如下

  1. 使用以下代码在您的控制器目录中创建一个名为 Errors 的新控制器

    defined('BASEPATH') OR exit('No direct script access allowed');
    
     class Errors extends CI_Controller {
    
       public function index() {
        redirect('authentication/login');
       }
    
    }
    
  2. 现在在您的 config/routes.php 文件中 $route['404_override'] 更改如下

    $route['404_override'] = 'errors/index';
    

现在您将在错误 URL 时被重定向,而不是显示 404 错误页面

  1. 如果您希望登录用户将看到 404 错误但未登录用户将看到登录页面,然后将 Errors 控制器中的 index 方法更改为

     public function index() {
       if($this->session->userdata('user_id')){// check any session item
           show_404();
       }
       redirect('authentication/login');
     }