繁体   English   中英

以正确的方式在Codeigniter中进行路由

[英]Routing in codeigniter the right way

我正在开发我的主页,该页面的右上角有一个登录按钮。 当“登录”文本如下时,我想显示一个登录页面:

<li class="nav-item">
                <a class="nav-link header-text" href="<?php echo 
site_url('Login/login') ?>">Login</a>
</li>

因此,该控制器称为“登录”,而视图称为“登录”。

我在routes.php文件中的路由规则如下

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

我的基本网址是: http:// localhost:8080 /我的网站网址是: http:// localhost:8080 / index.php

我的.htaccess文件如下所示:

<IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>

当前设置的方法不适用于路由,如果我单击登录名并重定向到以下URL,则会收到404未找到的消息: http:// localhost:8080 / index.php / Login / login.html您能帮我解决这个问题吗? 谢谢!

编辑:这是登录控制器代码:

<?php
class Login extends CI_Controller {

    public function view($page_name = 'login')
    {
        if ( ! file_exists(APPPATH.'views/pages/'.$page_name.'.php'))
        {
                // Whoops, we don't have a page for that!
                show_404();
        }

        $data['title'] = ucfirst($page_name); // Capitalize the first letter

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

}

尝试删除$route['(:any)'] = 'pages/view/$1'; 看看会发生什么。 它正在抓取每个请求并将其重定向到“页面/视图”。

我担心您会误解CodeIgniter(CI)如何使用URL。 你说,

因此,该控制器称为“登录”,而视图称为“登录”。

这使我相信URL代表

example.com/class/view

当他们实际代表这个

example.com/class/function/id/

其中“ id”是要传递给函数的一个或多个值。

也许您的评论有误,但如果不是这样,我建议您重新阅读文档的CodeIgniter URLs部分。 您可能还会发现“ URI路由 ”部分很有价值,因为它清楚地定义了何时可能要使用/config/Routes.php的内容。

登录URL也很奇怪。 我很好奇,看看控制器代码是什么样子。

好吧,我做到了! 基本上,我对本教程之后创建的标准路由规则有一个错误的想法。 要解决此问题,我必须:1)将我的base_url更改为: http:// localhost:8080 / app 我添加了/ app 2)在这种情况下,路由到视图的正确方法是: http:// localhost:8080 / app / index.php / name_of_the_class 3)为每个页面加载CSS,我必须在链接标记中使用base_url语法,例如:“ type =” text / css“ media =” all“>

如果您有任何建议,最佳做法或我可以做得更好的事情,我在这里!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM