Codeigniter URL和base_url()混淆

时间:2016-11-07 14:46:18

标签: php html css codeigniter

 $config['base_url'] = 'localhost/project';

 <link href="<?= base_url(); ?>/css/bootstrap.min.css" rel="stylesheet">

会产生错误,因为双重'/'而不会在我的视图中加载我的CSS。

这是浏览器上视图的页面源。

<link href="localhost/project//css/bootstrap.min.css" rel="stylesheet">

并且css不会加载。当我尝试页面源并按照链接时,会导致404错误。

我感到困惑的是,当我在配置文件上的base_url上添加协议时。

<link href="http://localhost/project//css/bootstrap.min.css" rel="stylesheet">

由于未知的原因,上面的url似乎指向css,它加载到我的视图上,即使它在'project'和'css'之间的url上仍然有两个'/'。此外,即使我删除视图上'css'之前的'/',它也会加载,只要我在我的基本网址上添加一个协议,即使没有协议,即使没有双'/'它仍然赢了'加载css。

<link href="http://localhost/project/css/bootstrap.min.css" rel="stylesheet">

我也有一些问题,

在我上面的配置基本网址中,我从不在最后添加'/',所以为什么在我的视图中使用函数base_url时会添加'/'。为什么会这样?

我的第二个问题是,我的网址上有'/'。

<link href="css/bootstrap.min.css" rel="stylesheet">

<link href="/css/shop-homepage.css" rel="stylesheet">

在我的浏览器上点击查看页面源上的网址时的第一个链接,它仍然在网址中有控制器。

http://localhost/project/Pages/css/bootstrap.min.css

如果我在'css'之前添加'/',它会删除网址中的'project'和'Pages'。

http://localhost/css/shop-homepage.css

我可以解决这个问题只是因为我不知道为什么会出现这样的问题,即使我可以让我的css加载我感觉不对,因为我不知道为什么。

3 个答案:

答案 0 :(得分:1)

base_urlURL Helper的一部分。

问题出在我们的配置文件中,配置文件说:

/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|   http://example.com/
|
| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url'] = 'http://localhost/site/';

您应该添加斜杠,并且由于您没有,base_url()函数会自动添加斜杠。

最佳用法是将文件位置作为参数提供,从

开始
<link href="<?= base_url("css/bootstrap.min.css"); ?>" rel="stylesheet">

答案 1 :(得分:0)

理想情况下,配置中的base_url应该是:

$config['base_url'] = "http://www.example.com/";

在您的视图中,您可以添加需要包含的文件夹名称和文件名。

<link href="<?= base_url(); ?>css/bootstrap.min.css" rel="stylesheet">

这样就不会产生混淆或双重&#39;

另外更喜欢使用它:

<link href="<?php echo base_url(); ?>css/bootstrap.min.css" rel="stylesheet">

答案 2 :(得分:0)

您无法使用主机名

启动网址
localhost/project

否则,无法确定您的域名或服务器中的位置是不可能的。

您需要一个完整的协议前缀:

http://localhost/project

...或者,如果已经在HTTP的上下文中,至少是双斜杠:

//localhost/project

浏览器通常更喜欢隐藏实际的URL(因此存在广泛的混淆),但基础值的工作方式完全相同。