【问题标题】:Codeigniter - Routing to subfolders not workingCodeigniter - 路由到子文件夹不起作用
【发布时间】:2019-03-06 02:20:01
【问题描述】:

您好,我在学习 codeigniter 时遇到了一个问题,但我的主要问题是我找不到我想要的网址:

我需要输入http://localhost/ciHrs/admin/pages,而我只想获取网址http://localhost/ciHrs/admin/,请解释如何访问此网址。最后是Default Controller,我想直接访问http://localhost/ciHrs/admin/。谢谢

我在控制器上有一个子文件夹名称 admin,在视图上有一个子文件夹名称 admin,在模型上有一个子文件夹 admin

这是我的路线

 <?php
defined('BASEPATH') OR exit('No direct script access allowed');

$route['admin/rooms'] = "admin/rooms/index";
$route['default_controller'] = 'admin/pages/view/dashboard';
$route['admin/(:any)'] = "admin/pages/view/$1";
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

我的控制器来访问这个页面

<?php 

class Pages extends CI_Controller{
    public function view(){
        $data['title'] = 'Dashboard';

        $this->load->view('admin/templates/header');
        $this->load->view('admin/pages/dashboard',$data);
        $this->load->view('admin/templates/footer');
    }
}

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    在您的路线上尝试以下规则:

    defined('BASEPATH') OR exit('No direct script access allowed');
    
    $route['default_controller'] = 'admin/pages/view/dashboard';
    $route['admin'] = "admin/pages";
    $route['admin/'] = "admin/pages";
    $route['admin/rooms'] = "admin/rooms/index";
    $route['admin/(:any)'] = "admin/pages/view/$1";
    $route['404_override'] = '';
    $route['translate_uri_dashes'] = FALSE;
    

    【讨论】:

    • 您好,请解释一下为什么有 2 个管理员/页面?
    • 当然@happycoding,第一条规则适用于管理网址不带斜杠,第二条适用于管理网址带有斜杠,我提供第二条规则,因为您可能会使用尾部斜杠 url 访问
    • 你能回答我的另一个问题吗先生请这里是链接link
    【解决方案2】:

    我认为你不依赖CI uri routing

    解释

    在您的路线上:

    $route['admin/rooms'] = "admin/rooms/index";
    

    所以在这里,您可以调用域,相应的admin/rooms 取决于您的$route 定义。它看起来像这样:http://example.com/admin/rooms 而不是 http://example.com/admin/rooms/index

    default_controller 似乎是在设置 cookie 会话时加载的。您只能调用域本身,它会自动加载您设置的default_controller

    因此,关于你的问题,你说你只想得到http://localhost/ciHrs/admin/,为什么不在$route 上定义,就像这样:

    $route['ciHrs/admin/'] = "ciHrs/admin/pages";
    

    或考虑pages uri 是否是动态的,将您的路线设置为:

    $route['ciHrs/admin/(:any)'] = "ciHrs/admin/$1";
    

    希望这会有所帮助!

    【讨论】:

    • 先生,我试过这个$route['ciHrs/admin/'] = "ciHrs/admin/pages";和这个$route['ciHrs/admin/(:any)'] = "ciHrs/admin/$1";,但它不起作用我在浏览器中输入这样http://localhost/ciHrs/admin/仍然显示404错误:(
    • 你读过this
    • 你好我可以跳过默认控制器我想要的是删除pages所以我可以直接去这个uri http://localhost/ciHrs/admin/
    • 你能解释一下ciHrs是什么吗?那是类还是函数?
    • ciHrs 是我的主文件夹。它是codeigniter文件夹:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2018-10-04
    相关资源
    最近更新 更多