我是codeigniter的新手,我正在阅读教程。我创建了一个新的控制器,当我尝试创建如下所示的链接时,它会抛出一个错误。
<p><a href="dashboard">Dashboard</a></p>
然而,当我更改如下所示的链接时,一切正常。
<p><a href="<?php echo base_url(); ?>dashboard">Dashboard</a></p>
这是Codeigniter的工作原理吗?我有没有办法在不使用base_url的情况下每次构建链接?
P.S。现在我不在乎链接中的index.php。
答案 0 :(得分:1)
您可以尝试使用基础https://www.w3schools.com/tags/tag_base.asp
<head>
<base href="<?php echo base_url();?>">
</head>
然后你应该可以使用像
<p><a href="dashboard">Dashboard</a></p>
确保您已设置如下所示的基本网址,并以
结尾/
$config['base_url'] = 'http://localhost/yourproject/';
或
$config['base_url'] = 'http://www.yourdomain.com/;
并自动加载网址助手config / autoload.php
$autoload['helper'] = array('url');
提示:确保您的控制器文件以第一个字母开头,大写相同,同样适用于班级名称
https://www.codeigniter.com/user_guide/general/styleguide.html#file-naming
示例:
文件名:Dashboard.php
<?php
class Dashboard extends CI_Controller {
// code
}
答案 1 :(得分:0)
最有可能的问题是因为使用了相对URL。 例如,当您使用更深层次的URI段时,这些将不起作用。 考虑下面几个例子:
如果您的应用程序的基础是http://www.example.com/
,您应该通过设置$config['base_url'] = 'http://www.example.com/';
在配置文件中设置,当您使用浏览器访问该URL时,以及当您点击某个相对URL时,您将被指向/重定向到由相对链接附加的当前URL的URL。
http://www.example.com/ => http://www.example.com/dashboard
但如果您处于某个更深层次的细分市场,我们会说http://www.example.com/index/15
,dashboard
会延伸那个,但您希望它指向http://www.example.com/dashboard
http://www.example.com/index/15 => http://www.example.com/index/15/dashboard
正如其他人所说,你应该设置和使用base_url()
CodeIgniter内置函数(使用附录作为函数base_url('dashboard')
的参数)。
如果您想在没有base_url('some-page')
函数的情况下使用它,则应使用相对于服务器路由1的绝对URL。
后一个看起来像前面的斜杠,它告诉Web服务器使用.htacces
文件或虚拟主机环境设置/dashboard
中定义的根位置。在你以前的例子中
<p><a href="/dashboard">Dashboard</a></p>
应该运作得很好。 如果它不起作用,则需要在.htaccess文件中设置RewriteBase属性。 在此处查看this comment并查看一些描述相对和绝对网址之间差异,优缺点的文章