CodeIgniter 正确设置路由

Posted

技术标签:

【中文标题】CodeIgniter 正确设置路由【英文标题】:CodeIgniter setting up routing properly 【发布时间】:2016-06-18 12:54:51 【问题描述】:

我正在尝试设置我的 codeigniter 路由来为管理面板制作身份验证表单,但路由不起作用。我是 CodeIgniter 的初学者,我想我遗漏了一些东西。

在我的服务器中,我将 CodeIgniter 文件放在我根目录的文件夹中,因此可以像这样访问它:

/localhost/ci

在我的 config.php 中,我设置了我的基本 url 并删除了索引页面以删除 index.php:

$config['base_url'] = 'http://localhost/ci/';
$config['index_page'] = '';

我还编辑了 .htaccess 以删除 index.php,就像 CodeIgniter 文档说的那样,所以它看起来像这样:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

现在,我的路线配置文件如下所示。我设置了默认页面和到我的 Auth 控制器的路由:

$route['default_controller'] = 'auth';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['auth/login'] = "auth/login";

这是我的控制器:

类 Auth 扩展 CI_Controller

function __construct() 
    parent::__construct();
    // load libraries


function index() 
    if (! $this->ion_auth->logged_in()) 
        // redirect them to the dashboard page
        redirect(base_url('auth/login'), 'refresh');
     else 
        // show the dashboard page
        redirect(base_url('dashboard'), 'refresh');
    


function login() 
    $this->load->view('login');

当我进入网络浏览器 http://localhost/ci/ 时,它会将我重定向到 http://localhost/ci/auth/login,但随后会出现 404 Not Found 错误。我错过了什么?我现在有点困惑,谢谢。

【问题讨论】:

views 文件夹中有 login.php 页面吗? 我目前在 html 文件中有我的视图,所以它看起来像“login.html”。这不正确吗? 可能就是这个问题。试试 $this->load->view('login.html');或将您的 html 文件转换为 php 文件 我刚试过这个,我也收到了 404 错误.. 为什么不是它的public 函数? function login() 【参考方案1】:

尝试更改您的 .htaccess 从:

RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /ci/index.php/$1 [L]

【讨论】:

这工作正常,非常感谢!我也在修改我的应用程序文件夹上的 .htaccess 。现在我在我的 codeigniter 根目录中创建了一个 .htaccess 文件,它现在可以工作了。

以上是关于CodeIgniter 正确设置路由的主要内容,如果未能解决你的问题,请参考以下文章

为啥/在找到页面时 CodeIgniter 在哪里设置 404 http 状态?

Tank Auth 的 Codeigniter 路由设置

如何设置动态路由以在 CodeIgniter 中使用 slug?

Codeigniter 子域路由

CodeIgniter 路由和 404 自定义错误

CodeIgniter路由在子目录中不起作用