我正在开发我的主页,该主页的右上角有一个登录按钮。我想在“登录”文本如下时显示登录页面:
<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 not found消息: 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);
}
}
答案 0 :(得分:0)
尝试删除$route['(:any)'] = 'pages/view/$1';
,然后看看会发生什么。它正在捕获每个请求,并将其重定向到“页面/视图”。
我担心您会误解CodeIgniter(CI)如何使用URL。你说,
因此该控制器称为“登录”,而视图为“登录”。
这使我相信URL代表
example.com/class/view
当它们实际代表这一点时
example.com/class/function/id/
其中“ id”是要传递给函数的一个或多个值。
也许您的评论有误,但如果不是这样,我建议您重新阅读文档的CodeIgniter URLs部分。您可能还会发现URI Routing部分很有价值,因为它清楚地定义了何时可能要使用/config/Routes.php
登录URL也很奇怪。我很好奇控制器代码是什么样子。
答案 1 :(得分:0)
好,我做到了! 基本上,我对本教程之后创建的标准路由规则有一个错误的想法。为了解决这个问题,我必须: 1)将我的base_url更改为:http://localhost:8080/app。我添加了/ app 2)在这种情况下,路由到视图的正确方法是:http://localhost:8080/app/index.php/name_of_the_class; 3)为每个页面加载css,我必须在link标签中使用base_url语法,如下所示: “ type =” text / css“ media =” all“>
如果您有任何建议,最佳实践或我可以做得更好的事情,我在这里!