如果在href属性中,base_url()会给出错误的链接

时间:2018-02-04 19:52:00

标签: php codeigniter href environment

我刚刚开始学习Codeigniter 3.1.7,当时我遇到了一些奇怪的东西。

我的网站安装在子目录domain.com/site1中,但会发生以下情况:

<h1><?php echo base_url(); ?></h1>

这会打印 domain.com/site1 /

<h1><a href="<?php echo base_url(); ?>">Link</a></h1>

这会生成一个href = domain.com/site1/domain.com/site1

这怎么可能?我错过了什么?

1 个答案:

答案 0 :(得分:3)

base_url()不会返回两次url。 如果您没有指定协议,浏览器会将其视为相对链接,并自动为其添加当前域和路径前缀。

一个正确的例子是:

<h1><a href="//<?php echo base_url(); ?>">Link</a></h1>

根据CodeIgniter文档,看起来您也可以将协议作为第二个参数传递: https://www.codeigniter.com/user_guide/helpers/url_helper.html#base_url

注意:在那里使用//也更好,因此SSL无关紧要。

使用//是更好的方法,可以自动检测它所处的环境。

附注:当运行要在安全环境中运行的脚本时,还要确保没有http://对脚本,图像,CSS等的引用,因为这将包含混合环境一些浏览器会警告你。